Java中的String,StringBuilder,StringBuffer三者的区别?
package com.aaa.zxf.ajax.test; /** * 弄清楚 string stringBuilder StringBuffer 三者之间的关系? * * * 一、 三者都是用来对字符串进行操作, * String通常用来定义一个变量, * 而StringBuilder StringBuffer则通常用来对字符串进行拼接等操作 * * 二、线程安全 * 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的 * * 三、 总结一下 * String:适用于少量的字符串操作的情况 * * StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 * * StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况 * */ public class TestString { /** * 查看源码 被final 修饰的。 * private final char value[]; * * 所以 string 修饰的是定长,不可变的。 * */ String h0="123"; String h1=new String("12"); String h2=h0 + h1; /** * 得到 "12312" * * 底层不可变 就会创建三个对象 占用内存 * 一直都未失去引用 无法回收垃圾 * 浪费资源 */ /** * StringBuilder 和 StringBuffer 都是继承了AbstractStringBuilder * * char 没有被final 修饰 内容是可变的。 * */ StringBuilder hah=new StringBuilder(); /** * 查看源码得知。。 * StringBuffer在拼接字符串时,使用了同步锁,安全性提高,而StringBuilder未使用同步锁,故效率提高。 */ StringBuffer h = new StringBuffer() ; }