原始数据类型在java中是可变的还是不可变的?
student{
int id;
}
现在学生已将id作为实例成员。
student st = new Student();
int id = 20;
st.id = id;
id = 30;
学生对象是否会发生变化?如果我们使用Integer
包装类而不是原语会发生什么?
答案 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。