美文网首页
String、StringBuffer、StringBuilde

String、StringBuffer、StringBuilde

作者: 非非非非常胖的大公鸡9527 | 来源:发表于2018-07-13 16:53 被阅读0次

一、StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。
StringBuffer和StringBuilder类的原理和操作基本相同,区别在于
StringBuffer支持并发操作,线性安全的,适合多线程中使用。
StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。

二、PS:

String s1 = "zm";
String s2 = new String("zm");
String s3 = s2;
则:
s1 == s2     //false
s1 == s3     //false
s2 == s3    //true
对于String,== 比较的是数值;即比较地址;

s1.equals(s2)      //true
s1.equals(s3)     //true
s2.equals(s3)     //true
equals()方法是将内容进行比较;

三、String s1 = "zm"和String s2 = new String("zm")区别:
String s1 = "zm":在堆里面建立了一个对象,若是堆里面已经有“zm”这个字符串,就直接指向这个对象,而不用新建;
String s2 = new String("zm"):一定会在堆里面建立一个对象;

ps:每一个字符串就是一个String类的匿名对象,任何对String对象的改动都会重新生成一个对象,如:

String str = "zm";
str = str + "lc";
这其实生成了3个对象:"zm"/"lc"/"zmlc".

若需要对String进行改动,可以使用StringBuffer和Stringbuilder,区别如上所示。

相关文章

网友评论

      本文标题:String、StringBuffer、StringBuilde

      本文链接:https://www.haomeiwen.com/subject/hxfspftx.html