1.String s =new String(“abc”); 创建了几个对象?
答:两个,一个是堆空间里new 出来的,另一个是char[] 对应的常量池,数据为” abc”;
2.String与StringBuffer的区别
String :有一个特殊的性质:不可变性。
- String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String
StringBuffer 可变序列,线程安全,效率低
StringBulder 也是可变序列,线程不安全,效率高。
简单地说,就是一个变量和常量的关系。StringBuffer对象的内容可以修改; 而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
基本数据类型:数据直接存储在栈上
引用数据类型区别:数据存储在堆上,栈上只存储引用地址