发布网友 发布时间:2022-04-20 20:53
共1个回答
热心网友 时间:2023-09-23 14:38
1、在C语言中我们知道是不存在字符串这一概念的,而只存在字符或字符数组概念,但是JAVA为了让用户更方便的对字符进行操作,所以自己定义了一个类,对字符数组进行了封装,而后形成了字符串。
2、面试题:请解释String类为什么不可以改变内容?String类其实是对字符数组进行了封装操作,用户真正操作的其实字符数组,居然是数组,我们知道传统的数组有一个天生的缺点:长度不可改变。我们在讲解继承的时候,我们是不是自己实现了一个Array类的操作啊,在这个类中我们是不是定义了一个addLen()的方法,这个方法主要是为了动态扩展数组长度而定义的,但是我们发现这个方法中改变的其实并不是数组长度,而是数组的引用地址。也就是说,我们改变的不是字符串的内容,而是字符串的引用地址。那原来的堆内存是不是就会成为垃圾啊?等待JVM回收。当别人问到一定要清楚这个概念哦。简单的说就是:字符串内部其实就是一个使用final关键字定义的char[]数组,数组长度一旦声明则不可改变,字符串一旦声明则不可改变,改变的引用内存指向。
3、String属于一个类,不属于一个关键字、准确的说它不是一个数据类型。只是由于它字符串的特殊支持,我们习惯把它叫做字符串类型。