1、String 和 stringbuffer 都是可以表示字符串 2、String 你可以看它的api,定义为public final class String, 所以它是不可变的,我们通常会这么做,String a = "a"; String b = "b"; a = a + b;其实这样做JVM会开辟个新地址表示新的结果a,所以这样加大了JVM的开销。 3、StringBuffer没有2中的问题,你直接StringBuffer sb = new StringBuffer(); sb.append("ab");但是他是线程安全的,效率就不怎么高,所以Java API推荐使用StringBuilder,这个和StringBuffer一样,只是是非线程安全,效率也会高点。
http://blog.csdn.net/jiangnan2014/article/details/21742701
不同的方法。
其实主要是String中的:
private final char value[];
private final int count;
private final int offset;
http://hi.baidu.com/ishanlin/item/0f7314ec7458efc0baf37d11
2、String 你可以看它的api,定义为public final class String, 所以它是不可变的,我们通常会这么做,String a = "a"; String b = "b"; a = a + b;其实这样做JVM会开辟个新地址表示新的结果a,所以这样加大了JVM的开销。
3、StringBuffer没有2中的问题,你直接StringBuffer sb = new StringBuffer(); sb.append("ab");但是他是线程安全的,效率就不怎么高,所以Java API推荐使用StringBuilder,这个和StringBuffer一样,只是是非线程安全,效率也会高点。
stringbuffer的值可以变化
一直都是同一个对象
而string是不能变化的
就是说如果对一个字符串有多次增加等操作的话
用stringbuffer一直是一个对象
而用string会生成很多个对象
这样效率没有stringbuffer高