黑马程序员技术交流社区

标题: String, StringBuilder, StringBuffer简单辨识 [打印本页]

作者: code23k    时间: 2019-3-28 14:18
标题: String, StringBuilder, StringBuffer简单辨识
       String, StringBuilder, StringBuffer
又到了令人无比激动的周四时刻了,由于记不清上面这三位大佬的区别和应用了,就百度了一波,顺便整理了一下。
当然这里只是进行了一个简单区分。
String类代表字符串常量,创建后不可改变。
       String s = “abc”;
       s = “abcde”;
       System.out.println(s);
       相信大家都知道输出的结果是“abcde”,但其实是JVM新建了一个同样命名为s的变量,而原来的s已经被垃圾回收了。所以重新对一个字符串赋值,相当于新建了一个同名的字符串。
       StringBuilder和StringBuffer均为可变字符序列,常用方法有append()和insert(),追加和插入。但是StringBuffer中的很多方法都被synchronized关键字锁修饰,意味着StringBuffer是线程安全的,而StringBuilder却不是线程安全的。
      
       所以就一般情况的运行速度而言:StringBuilder>StringBuffer>String
       就线程安全而言:StringBuilder是线程不安全的,而StringBuffer是线程安全的。
建议:
       String:适用于少量的字符串操作的情况,简单的字符串处理
       StringBuilder: 可用于单线程下在字符串缓冲区进行大量操作,较为麻烦的字符串处理
       StringBuffer:与StringBuilder类似,适用于多线程下在字符串缓冲区进行操作。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2