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

时间:2016-06-23 11:52:05

标签: java

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

student{
  int id;
}

现在学生已将id作为实例成员。

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

学生对象是否会发生变化?如果我们使用Integer包装类而不是原语会发生什么?

1 个答案:

答案 0 :(得分:0)

Java中的原始数据类型没有引用。当你设置

st.id = id;

你只在原始变量st.id上设置值(20)。 st.id和id之间没有任何联系。

否则,当您使用Integer时,st.id和id是引用。

Integer id = new Integer(20);

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

st.id = id;

将引用复制到st.id.此引用还指向堆中的对象(Integer(20))。

但改变了

id = new Integer(21);

不会改变st.id的值。它只将id的指针更改为堆中的其他Object。