为什么不用String而用StringBuffer

由于java的特殊性,如果在程序中使用String,那么就代表着在java里面生成了多个String,因为String对象是不可变的,也就是说如果大量使用String对象效率很降低。

再来说StringBuffer,这是一个特殊的String对象,这个对象有append方法,换句话说我们可以随意更改里面字符串里面的内容了。

能过学习Thinking in java发现,如果我们执行这么一段代码

String s = "abc" + "test" + "def" + 34;

实际上java在执行的时候会调用StringBuffer,也就是说在第一个“+”的时候就产生了一个StringBuffer对象,而“+”相当于调用了append方法。

最后,回到主题上去,为什么不用String而用StringBuffer:如果我们只用到String,而不对这个String进行任何操作,我建议直接用String;反之如果要对这个String进行操作,则建议用StringBuffer,因为毕竟JVM自己去把一个String转成StringBuffer是需要时间的,哪怕一点点时间也是时间~!~~~!

String初始化时创建多少个对象的问题:

参考:http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html

以下创建了同个对象:

String s2 = "abc";
String s3 = "123";
String s4 = "abc123";
String s1 = "abc"+"123";
String s=new String("abc"+"123");
System.out.println(s==s1);
System.out.println(s1==s2+s3);
System.out.println(s4==s2+s3);
System.out.println(s==s2+s3);
System.out.println(s4==s1);
System.out.println(s4==s);
System.out.println("abc123"=="abc"+"123");

实测是4个对象:abc, 123, abc123, new String("abc123");

打印结果:

false
false
false
false
true
false

路慢慢其休远羲,吾将上下而求所
原文地址:https://www.cnblogs.com/garinzhang/p/2573783.html