如何在Java类中实现操作符

Jay*_*ten 8 java operators

我试图创建一个无符号整数类.

public class UnsignedInteger extends Number implements Comparable<UnsignedInteger> 
    { 
    ... 
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法实现运营商,如; +, - ,*,/,<<,>>,|,^,>>>,<<

Roh*_*ain 18

Java不支持运算符重载.你唯一的选择是这样定义的方法add(),subtract(),multiply(),等,并写出逻辑存在,并调用它们的特定操作.

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

  • 这是一个很好的答案,我认为对_为什么_运算符重载从语言中排除的一些解释会增加很多:) (2认同)

Cep*_*pod 9

已经有5个答案说你不能重载运算符,但我想指出你根本不能在对象上使用算术运算符.他们只用原始类型(工作int,double等等).

以下代码编译的唯一原因

Integer a = 1, b = 2;
Integer c = a + b;
Run Code Online (Sandbox Code Playgroud)

是因为Java编译器将其编译为

Integer a = Integer.valueOf(1), b = Integer.valueOf(2);
Integer c = Integer.valueOf(a.intValue() + b.intValue());
Run Code Online (Sandbox Code Playgroud)

如果你想让它适合你UnsignedInteger,你必须扩展javac(尽管如此).

  • 我为有趣的结局点赞。这是一个很好的程序员笑话。哦java确实有String操作 (2认同)