如果 Java 不支持运算符重载,增量运算符如何在 Integer 实例上工作?
How does the increment operator work on an Integer instance if Java doesn't support operator overloading?
我了解到 Java 不支持运算符重载。然后它让我想知道如何在 Integer class.
的实例上使用增量运算符
Integer number = new Integer(10);
System.out.println(++number);
以上代码编译正常,没有错误。但是假设我自己创建了 class,只有一个成员变量(一个整数),并尝试使用增量运算符。它会给我一个编译器错误。这是为什么?
这是在 Integer
对象上调用增量运算符时执行的操作序列:
Integer
包装器对象被拆箱为 int
原语(使用 intValue()
方法)。
- 原语递增。
- 增量原语自动装箱到
Integer
包装器对象。
因此,实际上,运算符实际上应用于 int
基元,而不是对象。此行为仅针对原始包装器 类 的对象定义,无法使您自己的 类 以类似方式运行。
有关自动装箱和拆箱的详细信息,请参阅 here。
我了解到 Java 不支持运算符重载。然后它让我想知道如何在 Integer class.
的实例上使用增量运算符Integer number = new Integer(10);
System.out.println(++number);
以上代码编译正常,没有错误。但是假设我自己创建了 class,只有一个成员变量(一个整数),并尝试使用增量运算符。它会给我一个编译器错误。这是为什么?
这是在 Integer
对象上调用增量运算符时执行的操作序列:
Integer
包装器对象被拆箱为int
原语(使用intValue()
方法)。- 原语递增。
- 增量原语自动装箱到
Integer
包装器对象。
因此,实际上,运算符实际上应用于 int
基元,而不是对象。此行为仅针对原始包装器 类 的对象定义,无法使您自己的 类 以类似方式运行。
有关自动装箱和拆箱的详细信息,请参阅 here。