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


当前回答

正如许多人回答的那样:Java不支持用户定义的操作符重载。

也许这是跑题了,但我想评论一下我在一些回答中读到的一些东西。

可读性。 比较:

C = a + b C = a.add(b)

看一遍! 哪个更有可读性?

允许创建用户定义类型的编程语言应该允许它们以与内置类型(或基本类型)相同的方式工作。

所以Java打破了泛型编程的基本原则: 我们应该能够将内置类型的对象与用户定义类型的对象交换。 (你可能会想:“他说的是‘内置对象’吗?”是的,请看这里。)

关于字符串连接:

数学家用符号+表示集合上的交换运算。 所以我们可以确定a + b = b + a。 字符串连接(在大多数编程语言中)不尊重这种常见的数学符号。

答:=“你好”; B:= "world"; C:= (a + b = b + a);

或在爪哇:

字符串a = "hello"; 字符串b = "world"; Boolean c = (a + b).equals(b + a);

额外的: 注意在Java中相等和标识是如何混淆的。 ==(相等)符号表示: a.基本类型的相等性。 b.用户定义类型的标识符检查,因此,我们被迫使用equals()函数来表示相等。 但是…这与操作符重载有什么关系? 如果语言允许操作符重载,用户可以赋予相等操作符适当的含义。

其他回答

Java不允许操作符重载。首选的方法是在类上定义一个方法来执行动作:a.add(b)而不是a + b。你可以在这里看到Java从C语言中删除的其他部分的摘要:从C和c++中删除的特性

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

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

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

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

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

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

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

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

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