String StringBuffer StringBuilder

常见问题1.  String和new String的区别

2.  String和StringBuffer的转换

3.  String StringBuffer StringBuilder的区别

4.  ==和equal的区别


1.  String str1 =“ABC"   和 String  str2  = new String("ABC")的区别   


对于字符串:其对象是存储在栈中的""定义的存储在常量池中   new 确定存储在堆中

相等的字符串在常量池中只有一份,在堆中有多份(String str在栈中  “ABC"在常量池中 new String() 在堆中)


String str1="ABC"可能创建一个对象或者不创建对象,


如果"ABC"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("ABC")如果已经存在,str1直接reference to 这个String池里的对象。


String str2 = new String("ABC")至少创建一个对象,也可能两个。

因为用到new关键字,会在heap创建一个 str2 的String 对象,它的value 是 "ABC".同时,如果"ABC"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("ABC").



String str1 = new String(“abc”)        str1 != str2      (== 与equals的区别)  

String str2 = new String("abc")   

String str3 = "ABC"                          str3 = str4

String str4 = "ABC"                          str3 = str4 = str5

String str5 = "A"+"BC";  


String和StringBuffer的转换

String转StringBuffer:  StringBuffer sb = new StringBuffer(s);   String  s  = new String("xxx"); StringBuffer转String:  String str = sb.toString();



String和StringBuffer  StringBuilder的区别

执行速度:StringBulider>StringBuffer>String

变量(常量)线程安全。。

 String                                                                  

常量,不可变的

在进行字符串处理时,会产生新的String对象          

添加字符串使用“+”                                            

线程安全


StringBuffer    

变量,可以修改内容

在进行字符串处理时,不会产生新的String对象

添加字符是使用append()

线程安全的(多线程程序中可以使用但执行效率缓慢)


        StringBuilder

        变量,可以修改内容

线程不安全的(单线程中的性能比StringBuffer高)


总结:


1.如果要操作少量的数据用 = String

2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

  3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer


4.==和equal的区别

==是一个运算符   equals则是string对象的方法

==比较的是引用类型 比较的是地址值是否相同

equals比较的是内容是否相同(堆中的内容是否相同)



扩展String的一种方式比StringBuffer快的多  

e.g.      String  s  = "hello"+"you"+"hao"这种方式比StringBuffer的append()快的多,这就被jvm解析成StringBuffer对象的拼接    

String s = "hello" String s2 = "you"   String s3 = "hao"   String s4 = s+s2+s3这种方式比StringBuffer慢的多这样jvm就规规矩矩的拼接String字符串了

你可能感兴趣的:(String StringBuffer StringBuilder)