繁体   English   中英

如果Java不支持运算符重载,则增量运算符如何在Integer实例上工作?

[英]How does the increment operator work on an Integer instance if Java doesn't support operator overloading?

我读到Java不支持运算符重载。 然后让我想知道如何在Integer类的实例上使用增量运算符。

Integer number = new Integer(10);
System.out.println(++number);

上面的代码可以正常编译,没有错误。 但是,假设我创建了自己的类,并且只使用一个成员变量(整数),并尝试使用增量运算符。 这会给我一个编译器错误。 为什么是这样?

这是在Integer对象上调用增量运算符时执行的操作序列:

  1. Integer包装器对象被取消装箱到int原语(使用intValue()方法)。
  2. 基元递增。
  3. 增量原语会自动装箱到Integer包装器对象。

因此,实际上,运算符实际上应用于int原语,而不应用于对象。 仅针对原始包装器类的对象定义了此行为,并且没有办法使您自己的类以类似的方式表现。

有关自动装箱和拆箱的更多信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM