欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

String、StringBuilder和StringBuffer的比较,

来源: javaer 分享于  点击 30982 次 点评:142

String、StringBuilder和StringBuffer的比较,


目录

  • 1.String特性
    • 1.1 不可变
    • 1.2 字符串常量池
  • 2.StringBuilder和StringBuffer
    • 2.1 区别
    • 2.2 应用场景

@

1.String特性

1.1 不可变

它是Immutable类,被声明为final class,所有属性也是final的, 其拼接、裁剪等操作都会产生新的String对象。不可变的主要作用在于当一个对象需要被多线程共享,并且访问频繁时,可以省略同步和锁等待的时间,从而大幅度提高系统性能。不可变模式是一个可以提高多线程程序的性能,降低多线程程序复杂度的设计模式。所以String是原生线程安全的。

1.2 字符串常量池

String在Java世界中使用过于频繁,队系统性能的影响权重很大,所以JVM有针对性的优化。为了节约内存空间,防止相同字符串反复出现,避免创建重读字符串,引入了缓存字符串常量池,其机制涉及到String的创建方式。

String str1 = "123"; //通过直接量赋值方式,放入字符串常量池  
String str2 = new String(“123”);//通过new方式赋值方式,不放入字符串常量池

String s3 = new String("xyz");//通过new方式赋值方式,先在常量池创建xyz,再从堆中创建string对象,并将引用付给s3
String s4 = new String("xyz");//从堆中创建string对象,并将引用付给s4
System.out.println(s3==s4); //s3 != s4

2.StringBuilder和StringBuffer

两者都是实现AbstractStringBuilder抽象类,拥有几乎一致对外提供的调用接口。

2.1 区别

2.2 应用场景

参考
《Java核心技术36讲》
《深入理解JVM虚拟机》

相关文章

    暂无相关文章
相关栏目:

用户点评