有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java什么是运算符重载,它与多态性不同吗?

我用Java编程,一直在努力理解操作符重载到底是什么。我还是有点困惑

运算符可以根据使用它的类而具有不同的含义?我读过这是“名字多态性”

Java显然不支持它,对此似乎有很多争议。我应该担心吗

作为最后一个问题,老师在作业中指出作业使用的是操作符重载,他主要是C++程序员,但我们可以用java编写作业。既然Java不支持重载,有什么我应该警惕的吗


共 (3) 个答案

  1. # 1 楼答案

    运算符重载基本上意味着对不同的数据类型使用相同的运算符。因此会有不同但相似的行为

    Java确实不支持这一点,但在任何类似的情况下都可能有用,您可以轻松地在Java中解决它

    Java中唯一的重载运算符是算术+运算符。当与数字(intlongdouble等)一起使用时,它会添加它们,正如您所期望的那样。当与String对象一起使用时,它会将它们连接起来。例如:

    String a = "This is ";
    String b = " a String";
    String c = a + b;
    System.out.print (c);
    

    这将在屏幕上打印以下内容:This is a String

    这是Java中唯一可以讨论运算符重载的情况

    关于你的作业:如果要求做一些涉及操作符重载的事情,你不能在Java中这样做。问你的老师你在这项作业中可以使用什么语言。你很可能需要用C++来做。p>

    PS:在IntegerLongDouble等对象的情况下,由于拆箱,它也会工作

  2. # 2 楼答案

    可以使用天然a!=b(a不等于b)或a等于(b)

    b.set(1, 0);
    a = b; 
    b.set(2, 0);
    assert( !a.Equals(b) );
    

    但是与其他语言相比,java有一组有限的运算符重载http://en.wikipedia.org/wiki/Operator_overloading

  3. # 3 楼答案

    Java apparently does not support it and there seems to be a lot of controversy around this.

    关于这一点没有争议。有些人可能不同意这个决定,但James Gosling和其他人从第一天起就决定让类开发人员对操作符进行重载。这不太可能改变

    正如这里的其他人所指出的,他们保留JVM在有限的基础上重载操作符的权利。关键是,当你开发自己的课程时,你不能这么做

    他们这样做是因为有C++开发者滥用能力的例子(例如,重载点运算符)。p>

    Should I worry about this?

    不,Java不会爆炸。你就是不能在课堂上这么做。如果你觉得你需要,你只需要写C++或其他语言。p>