请您能告诉我是否有可能在Java中重载操作符?如果它在Java中被使用,你能告诉我它是什么吗?


当前回答

除了所有人都指出+对于字符串是重载的,-对于浮点运算和整数运算也是重载的,*和/也是。

(编辑) %对于浮点数也是重载的,这对于具有C或c++背景的人来说可能有点惊讶。

其他回答

您自己不能这样做,因为Java不允许操作符重载。

然而,有一个例外。String对象的+和+=重载。

不,Java不支持用户定义的操作符重载。Java中唯一接近于“自定义”操作符重载的方面是对字符串的+处理,它要么导致常量的编译时连接,要么导致使用StringBuilder/StringBuffer的执行时连接。你不能定义你自己的操作符,它们以同样的方式工作。

对于支持运算符重载的类java(和基于jvm)语言,可以参考Kotlin或Groovy。或者,您也可以使用Java编译器插件解决方案。

可以尝试Java操作符重载。它有自己的局限性,但如果您真的想使用操作符重载,那么值得一试。

只需在Java代码中使用Xtend即可。它支持操作符重载:

    package com.example;

@SuppressWarnings("all")
public class Test {
  protected int wrapped;

  public Test(final int value) {
    this.wrapped = value;
  }

  public int operator_plus(final Test e2) {
    return (this.wrapped + e2.wrapped);
  }
}

package com.example

class Test2 {

    new() {
        val t1 = new Test(3)
        val t2 = new Test(5)
        val t3 = t1 + t2
    }

}

在官方网站上,有一个针对每个操作符实现的方法列表!

与c++不同,Java不支持用户定义的操作符重载。重载是在java内部完成的。

我们可以用+(加号)为例:

int a = 2 + 4;
string = "hello" + "world";

这里,plus将两个整数相加并连接两个字符串。因此,我们可以说Java支持内部操作符重载,但不支持用户定义的操作符重载。