当你这样欺骗时。实例是否已创建?
String string = "a"+"b"+"c";
应该像下面这样声明吗?
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("a");
sBuilder.append("b");
sBuilder.append("c");
对于
String string = "a"+"b"+"c";
编译器生成一个完整的字符串。字节码看起来像这大多数编译器都会这样做,因为它使用的是常量。根据JDK的版本,可能会对变量串联进行不同的处理。
0 ldc <String "abc"> [16]
2 astore_1 [string]
因此,以下内容将是不必要的开销。
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("a");
sBuilder.append("b");
sBuilder.append("c");
但是,如果您需要在同一个StringBuilder
对象上调用append,则可以执行以下操作:
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("a").append("b").append("c");
StringBuilder.append
返回它自己的实例。