fas*_*ava 14 java string concatenation
我有一个巨大的字符串如下:
String str = "aaaaaaa" 
        + "bbbbbbbb" 
        + "cccccccc" 
    .... 
        + "zzzzzzzz";  // about 200 lines long
这是对记忆的大浪费吗?将它放在一行还是使用它会更好StringBuilder吗?这样做是为了创建一个长sql.
Jon*_*eet 25
不会.如果所有字符串都是常量的,编译器将在编译时执行连接(因为它们在您的问题中).所以最终表现比版本更好StringBuilder.
否则,它将使用StringBuilder(或StringBuffer)执行任何非常量部分的串联.
所以编译版本:
String x = "a" + "b";
应完全相同:
String x = "ab";
请注意,"非常量"部分可能意味着您有时可以明智地使用包围来获得(非常小的)额外效率.例如:
int value = ...;
String x = "a" + value + "b" + "c";
......效率低于:
int value = ...;
String x = "a" + value + ("b" + "c");
......作为第一个附加"b"和"c"分开.高效版本相当于:
int value = ...;
String x = "a" + value + "bc";
我不记得曾经看到这被用作合法的微优化,但它至少是一个兴趣点.