是Java中可突变或不变的原始数据类型



java中的原始数据类型是可变的还是不变的?

student{
  int id;
}

现在,学生拥有ID作为实例成员。

student st = new Student();
int id = 20;
st.id = id;
id = 30;

学生对象会更改吗?如果我们使用Integer包装程序类代替原语?

会发生什么?

Java中的原始数据类型没有参考。当您设置

st.id = id;

您仅在原始变量St.Id上设置值(20)。St.ID和ID之间没有联系。

否则,当您使用整数时,St.ID和ID是参考。

Integer id = new Integer(20);

在堆中创建和对象是指向它的引用。

st.id = id;

复制对圣德的引用。该引用还指向堆中的对象(Integer(20))

但更改

id = new Integer(21);

不会改变圣伊德的价值。它仅将ID的指针更改为堆中的另一个对象。

最新更新