当它是声明字符串生成器vs字符串

  • 本文关键字:字符串 vs 声明 java
  • 更新时间 :
  • 英文 :


当你这样欺骗时。实例是否已创建?

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返回它自己的实例。

最新更新