Java 为什么integer类对象引用中的增量操作整数值?

Java 为什么integer类对象引用中的增量操作整数值?,java,object,reference,integer,Java,Object,Reference,Integer,我有一个基本的疑问,我们可以增加对Integer类对象的引用,而不是对任何其他类的引用(D类有1个Integer数据成员和一个参数化构造函数) 这里x和d都是引用,我们仍然能够增加整数引用,而不是任何其他引用。我缺少一些非常基本的东西,请帮我解决。这是因为jdk 1.5引入了包装类的自动装箱。在内部,java将整数引用转换为int并递增。您不能增加对象。这是因为jdk 1.5引入了包装类的自动装箱。在内部,java将整数引用转换为int并递增。不能增加对象的数量 Integer x=new In

我有一个基本的疑问,我们可以增加对Integer类对象的引用,而不是对任何其他类的引用(D类有1个Integer数据成员和一个参数化构造函数)


这里x和d都是引用,我们仍然能够增加整数引用,而不是任何其他引用。我缺少一些非常基本的东西,请帮我解决。

这是因为jdk 1.5引入了包装类的自动装箱。在内部,java将整数引用转换为int并递增。您不能增加对象。

这是因为jdk 1.5引入了包装类的自动装箱。在内部,java将整数引用转换为int并递增。不能增加对象的数量

Integer x=new Integer(10); x++;
在这里,java编译器将执行对象的
unboxing
,它将
Integer
对象转换为primitive
int
。然后将执行增量操作。这仅适用于java原语,
自动装箱
将原语转换为包装器对象,相反的是调用
取消装箱
。这就是这里正在发生的事情

自动装箱
取消装箱
是一种自动转换,它仅为java原语定义。因此,它不能在其他对象上执行。记住,对象不仅仅是内存引用,比如
C或C++
,我们可以增加它们

在这里,java编译器将执行对象的
unboxing
,它将
Integer
对象转换为primitive
int
。然后将执行增量操作。这仅适用于java原语,
自动装箱
将原语转换为包装器对象,相反的是调用
取消装箱
。这就是这里正在发生的事情


自动装箱
取消装箱
是一种自动转换,它仅为java原语定义。因此,它不能在其他对象上执行。请记住,对象不仅仅是内存引用,如
C或C++
,我们可以增加它们。

Java无法为任意类重载运算符。因此,
D;d++
只是不可用。你可以做:

public class D {
    private int value;
    public D( int v ){
        value = v;
    }

    public void increment(){
        value++;
    }
}
现在你可以做了

D d = new D(10);
d.increment();

d的值将是11。

Java无法为任意类重载运算符。因此,
D;d++
只是不可用。你可以做:

public class D {
    private int value;
    public D( int v ){
        value = v;
    }

    public void increment(){
        value++;
    }
}
现在你可以做了

D d = new D(10);
d.increment();
d的值将是11。

根据,将原始数据类型自动转换为其等效的包装类型称为
自动装箱
,相反的操作称为
取消装箱
。每当我们在表达式中使用包装类的对象时,JVM就会自动取消装箱和自动装箱

Integer object;
object = 100;        //Autoboxing of int
++object;
当我们对Integer对象执行递增操作时,它首先被取消固定,然后递增,然后再次重新固定为Integer类型的对象。您还可以查看

根据,将原始数据类型自动转换为其等效包装类型称为
自动装箱
,相反的操作称为
取消装箱
。每当我们在表达式中使用包装类的对象时,JVM就会自动取消装箱和自动装箱

Integer object;
object = 100;        //Autoboxing of int
++object;

当我们对Integer对象执行递增操作时,它首先被取消固定,然后递增,然后再次重新固定为Integer类型的对象。你也可以看看

谢谢你,伙计!是否可以实现自动装箱,以便如果我增加对我的类的引用,它将增加我的类的数据成员?@uniquephase,您不能为您的类实现自动装箱。相反,您可以在
D
类中公开像
incrementX()
这样的简单方法,它将在
D
类中内部增加
x
的值。谢谢!是否可以实现自动装箱,以便如果我增加对我的类的引用,它将增加我的类的数据成员?@uniquephase,您不能为您的类实现自动装箱。相反,您可以在
D
类中公开像
incrementX()
这样的简单方法,该方法将在
D
类中内部增加
x
的值。谢谢,先生,这个解装箱概念可以实现到任何自定义类中。@uniquephase自动装箱介于简单类型(int,byte,…)和它的相关类之间(整数,字节,…)。您的问题没有意义。如果需要“递增”类D的对象,请实现D.increment().@uniquephase否,不可能。无法编译。java中也不支持运算符重载。@YoungHobbit sir我想实现的是,如果我有一个包含一些整数成员的类。如果在创建对象和初始化之后,我在引用中递增所有成员值。还有其他方法可以这样做,但由于缺乏自动装箱的知识和查看整型类引用行为,我一直坚持这样做。感谢帮助!@uniquephase,您需要提供自己的实现。只需一个简单的方法来增加值。谢谢,先生,这个解装箱概念可以实现到任何自定义类?@uniquephase Autoboxing介于简单类型(int,byte,…)及其相关类(Integer,byte,…)之间。您的问题没有意义。如果需要“递增”类D的对象,请实现D.increment().@uniquephase否,不可能。无法编译。java中也不支持运算符重载。@YoungHobbit sir我想实现的是,如果我有一个包含一些整数成员的类。如果在创建对象和初始化之后,我在引用中递增所有成员值。还有其他方法可以这样做,但由于缺乏自动装箱的知识和整数类引用行为,我坚持这样做。谢谢你的帮助!@u