如何在Java类中实现运算符

如何在Java类中实现运算符,java,operators,Java,Operators,我正在尝试创建一个无符号整数类 public class UnsignedInteger extends Number implements Comparable<UnsignedInteger> { ... } 公共类UnsignedInteger扩展数字 { ... } 是否有方法实现诸如;+,-,*,/,|,^,>>>, 不,您不能在Java中重写运算符。不,您不能在Java中重写运算符。否。Java不支持运算符重载。否。Java不支持运算

我正在尝试创建一个无符号整数类

public class UnsignedInteger extends Number implements Comparable<UnsignedInteger> 
    { 
    ... 
    }
公共类UnsignedInteger扩展数字
{ 
... 
}

是否有方法实现诸如;+,-,*,/,|,^,>>>, 不,您不能在Java中重写运算符。

不,您不能在Java中重写运算符。

否。Java不支持运算符重载。

否。Java不支持运算符重载。

。您唯一的选择是定义方法,如
add()
subtract()
multiply()
,等等,并在其中写入逻辑,并为特定操作调用它们

您可以查看类,了解如何定义支持各种操作的方法。如果感兴趣,您甚至可以浏览源代码,可以在jdk主目录的src文件夹中找到。

。您唯一的选择是定义方法,如
add()
subtract()
multiply()
,等等,并在其中写入逻辑,并为特定操作调用它们


您可以查看类,了解如何定义支持各种操作的方法。如果感兴趣,您甚至可以浏览源代码,可以在jdk主目录的src文件夹中找到。

在Java中不可能重写运算符。您可以定义表示操作的方法,就像或在标准库中一样。

在Java中不可能重写运算符。你可以做的是定义方法来表示操作,比如在标准库DO中。

< P> java不支持操作符重载,他们认为这是一个坏的做法,知道它们重载<代码> > +代码>和<代码> += < /Cord>运算符> <代码>字符串> <代码>类< /p> < p> java不支持操作符重载,他们认为这是一个错误的做法,知道它们重载了<代码> +<代码>和<代码> += < /代码>运算符,对于<代码>字符串< /代码>类

< p>已经有5个答案,说明不能重载运算符,但我想指出,不能在<强>对象< /强>上使用算术运算符。它们只适用于基本类型(
int
double
,等等)

以下代码编译的唯一原因

Integer a = 1, b = 2;
Integer c = a + b;
是因为Java编译器将其编译为

Integer a = Integer.valueOf(1), b = Integer.valueOf(2);
Integer c = Integer.valueOf(a.intValue() + b.intValue());

如果你想让它适用于你的
无符号整数,你必须扩展javac(这是可能的)。

已经有5个答案说你不能重载操作符,但是我想指出,你根本不能在对象上使用算术操作符。它们只适用于基本类型(
int
double
,等等)

以下代码编译的唯一原因

Integer a = 1, b = 2;
Integer c = a + b;
是因为Java编译器将其编译为

Integer a = Integer.valueOf(1), b = Integer.valueOf(2);
Integer c = Integer.valueOf(a.intValue() + b.intValue());
如果您想让它适用于您的
UnsignedInteger
,您必须扩展javac(尽管这是可能的)。

有一个名为“”的javac插件(类似Lombok的注释处理器),它为Java添加了操作符重载

它允许您非常轻松地将运算符重载添加到自己的类中。除此之外,JavaAPI的许多内置类在使用该插件时还支持运算符重载。 (例如:代替list.get(6)或map.get(“hello”),您可以执行list[6]和map[“hello”])

使用javac编译时,只需在类路径中包含.jar

所有主要ide都有插件:Eclipse、Netbeans和intellijidea。

有一个名为“”的javac插件(类似Lombok的注释处理器),它为Java添加了操作符重载

它允许您非常轻松地将运算符重载添加到自己的类中。除此之外,JavaAPI的许多内置类在使用该插件时还支持运算符重载。 (例如:代替list.get(6)或map.get(“hello”),您可以执行list[6]和map[“hello”])

使用javac编译时,只需在类路径中包含.jar


所有主要IDE都有插件:Eclipse、Netbeans和IntelliJ IDEA。

Java不支持重载运算符<代码>C#
does~;)我猜我在看树的时候错过了森林。Java不支持重载操作符<代码>C#does~;)我想我在看树的时候错过了森林。这只是事实的一半。它是字符串的语法糖,并由javac转换为
StringBuilder#append()
调用。这只是正确的一半。它是字符串的语法糖,并由javac转换为
StringBuilder#append()
调用。这是一个很好的答案,我认为关于为什么从语言中排除运算符重载的一些解释会增加很多:)@BenjaminGruenbaum。我在SO上添加了另一篇文章的链接,其中描述了这一点。这是一个很好的答案,我认为关于为什么从语言中排除运算符重载的一些解释会增加很多:)@BenjaminGruenbaum。我在SO上添加了另一篇文章的链接,这篇文章描述了这一点。我对有趣的结局给出了一个赞。这是一个很好的程序员的笑话。哦,java确实有字符串运算,我给了一个类似的有趣的结尾。这是一个很好的程序员的笑话。噢,java确实有字符串操作