脚本宝典收集整理的这篇文章主要介绍了

java中的String为什么是不可变的

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

这是之前在网上看到的一个问题,我就是总结一下。
什么是不可变对象:
如果一个对象,在它创建完成后,不能在改变它的状态,那么这个对象就是不可变的。不能改变这个对象的状态就是:不改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。

String类是一个final类,是不能被继承的

区分对象和对象的引用

public class Person {     public static void main(String[] args) {         String s = "abcd";          System.out.println("s = "+s);         s = "123456";          System.out.println("s = "+s);     }   }

这里的s看上去被改变了,但是s却是String对象的引用,它指向了一个具体的对象,而s的改变其实就是它所指向的对象发生了改变。

private final char value[];

//String是将输入的字符串封装为字符数组value[]就是这个数组的长度

private int hash; 

//是对象的哈西值的缓存

以上是JDK 1.7中的String源代码,由以上代码可以看出
String其实就是对字符数组的封装,在java中数组也是对象,value也只是一个引用,它指向了一个真正的数组对象。而在JDK 1.6中, value是String封装的数组,offset是String在这个value数组中的起始位置,count是String所占的字符的个数。也可以得出这个结论的

并且我们发现value,offset,count都是private final,并且类中也没有提供get()和set()方法。这点也可以看出String是无法修改的.

谢谢:http://www.importnew.com/16817.html提供的文章

总结

以上是脚本宝典为你收集整理的

java中的String为什么是不可变的

全部内容,希望文章能够帮你解决

java中的String为什么是不可变的

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过