一、是否可变
String类是不可变的,而另外两个是可变的。
String类是每当你new一个字符串时,他都会在新的内存地址上产生该字符串,并将对象引用。
而StringBuffer、StringBuilder则是依靠父类,初始化默认容量为16,之后超过则增加一倍容量+2,当然他也有一个最大值为0x7fffffff
二、使用方法
String类可以直接输入字符串如:String s = "hello";
也可以new出对象如:String s = new String("hello");
如果需要拼接的话则使用 s += "world";
StringBuffer、StringBuilder首先实例化 StringBuffer sb = new StringBuffer("hello");
拼接有2种方法,append(str)与insert(str,index);
sb.append(" world");则sb中内容为hello world
sb.insert("abc",4);则sb中内容为hellabco
StringBuilder同样
三、是否安全
SringBuffer由于实现了加锁操作,因此是线程安全的
而String和StringBuilder则是线程不安全的
四、使用环境
String主要处理操作数量少的
StringBuilder则在单线程大数量数据情况下使用
StringBuffer则在多线程大数量数据情况下使用