如果Java没有';不支持运算符重载?

如果Java没有';不支持运算符重载?,java,oop,operator-overloading,increment,Java,Oop,Operator Overloading,Increment,我读到Java不支持操作符重载。然后我想知道如何在Integer类的实例上使用增量运算符 Integer number = new Integer(10); System.out.println(++number); 上面的代码编译得很好,没有错误。但假设我创建了自己的类,只有一个成员变量(一个整数),并尝试使用增量运算符。这会给我一个编译器错误。这是为什么?这是在对整数对象调用增量运算符时执行的操作序列: Integer包装器对象被解除绑定到int原语(使用intValue()方法) 原语是

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

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

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

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

  • Integer
    包装器对象被解除绑定到
    int
    原语(使用
    intValue()
    方法)
  • 原语是递增的
  • 递增原语自动装箱到
    整数
    包装对象
  • 因此,实际上,运算符实际上应用于
    int
    原语,而不是对象。此行为仅为原始包装器类的对象定义,并且无法使您自己的类以类似的方式运行


    有关自动装箱和取消装箱的更多信息,请参阅

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

  • Integer
    包装器对象被解除绑定到
    int
    原语(使用
    intValue()
    方法)
  • 原语是递增的
  • 递增原语自动装箱到
    整数
    包装对象
  • 因此,实际上,运算符实际上应用于
    int
    原语,而不是对象。此行为仅为原始包装器类的对象定义,并且无法使您自己的类以类似的方式运行


    有关自动装箱和取消装箱的更多信息,请参阅

    回答标题中的问题:该运算符是为整数定义的。回答文章末尾的问题:因为该运算符不是为类定义的(并且不能是因为不允许运算符重载)。整数是不可变的。您确定它是递增的
    number
    而不是将其转换为
    int
    并显示
    ++int
    ?在预增量后打印
    number
    。回答标题中的问题:该运算符是为整数定义的。回答文章末尾的问题:因为该运算符不是为类定义的(并且不能是因为不允许运算符重载)。整数是不可变的。您确定它是递增的
    number
    而不是将其转换为
    int
    并显示
    ++int
    ?在预增量后打印
    number