String为什么是不可变的
1个回答
展开全部
1、在C语言中我们知道是不存在字符串这一概念的,而只存在字符或字符数组概念,但是JAVA为了让用户更方便的对字符进行操作,所以自己定义了一个类,对字符数组进行了封装,而后形成了字符串。
2、面试题:请解释String类为什么不可以改变内容?String类其实是对字符数组进行了封装操作,用户真正操作的其实字符数组,既然是数组,我们知道传统的数组有一个天生的缺点:长度不可改变。我们在讲解继承的时候,我们是不是自己实现了一个Array类的操作啊,在这个类中我们是不是定义了一个addLen()的方法,这个方法主要是为了动态扩展数组长度而定义的,但是我们发现这个方法中改变的其实并不是数组长度,而是数组的引用地址。也就是说,我们改变的不是字符串的内容,而是字符串的引用地址。那原来的堆内存是不是就会成为垃圾啊?等待JVM回收。当别人问到一定要清楚这个概念哦。简单的说就是:字符串内部其实就是一个使用final关键字定义的char[]数组,数组长度一旦声明则不可改变,字符串一旦声明则不可改变,改变的引用内存指向。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询