1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
解:String类是引用数据类型。因为底层原理是由字节数组(byte[])组成,一个字符串对象在堆内存开辟空间或者在字符串常量池里,当长度改变,地址值将改变指向别的对象空间,就不再是原来的对象了。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
解:第一个创建了2个对象,一个指向堆内存开辟的对象空间,另一个字符串对象从堆内存对象空间指向字符串常量池的对象。
第二个创建了1个对象,指在堆内存里字符串常量池里的字符串对象。
3.StringBuilder的作用,为什么要使用StringBuilder
解:可变字符串序列。String每次拼接字符串都会创建新的对象,浪费时间、空间。用StringBuilder的话,不需要创建对象,只需要添加就可以改变内容。 |