java封装类中的是只读类,请问怎么理解?
比如Java中的Integer封装类我用:Integerin=newInteger(3);这个时候我可以在改变in的值,in=5;请问这个怎么理解封装类是只读?...
比如Java中的Integer封装类我用:
Integer in=new Integer(3);
这个时候我可以在改变in的值,in=5;
请问这个怎么理解封装类是只读? 展开
Integer in=new Integer(3);
这个时候我可以在改变in的值,in=5;
请问这个怎么理解封装类是只读? 展开
1个回答
展开全部
这个只读指的是对象只读,不是引用只读。
in = 5;
仅仅是把引用in指向了一个新的Integer对象,而源对象并没有任何改变,
他只是没有引用指向了,他不久后会被垃圾回收机制回收。
相似的例子是String,String也是只读的,但是我们可以
String s = "123";
s = "234";
一个可改变类型的例子是StringBuffer
StringBuffer sss = new StringBuffer("123");
sss.append("4");
这时sss变成了1234,而我们并没有改变引用,我们改变的是对象。
请注意,=运算符只能改变基本数据类型和引用,而不能改变任何对象。
in = 5;
仅仅是把引用in指向了一个新的Integer对象,而源对象并没有任何改变,
他只是没有引用指向了,他不久后会被垃圾回收机制回收。
相似的例子是String,String也是只读的,但是我们可以
String s = "123";
s = "234";
一个可改变类型的例子是StringBuffer
StringBuffer sss = new StringBuffer("123");
sss.append("4");
这时sss变成了1234,而我们并没有改变引用,我们改变的是对象。
请注意,=运算符只能改变基本数据类型和引用,而不能改变任何对象。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询