A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© code23k 初级黑马   /  2019-3-28 14:18  /  830 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       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类似,适用于多线程下在字符串缓冲区进行操作。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马