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

时间:2016-01-12 03:40:34

标签: java oop operator-overloading increment

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

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

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

1 个答案:

答案 0 :(得分:5)

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

  1. Integer包装器对象已取消装箱到int原语(使用intValue()方法)。
  2. 原语递增。
  3. 增量原语被自动装箱到Integer包装器对象。
  4. 因此,实际上,运算符实际上应用于int原语,而不是对象。此行为仅针对原始包装类的对象定义,并且无法使您自己的类以类似的方式运行。

    有关自动装箱和拆箱的详细信息,请参阅here