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