使用
String串联
StringBuilder将由编译器转换为 *** 作。
要查看编译器的工作方式,我将举一个示例类,对其进行编译,然后用jad对其进行反编译,以查看生成的字节码是什么。
原始班级:
public void method1() { System.out.println("The answer is: " + 42);}public void method2(int value) { System.out.println("The answer is: " + value);}public void method3(int value) { String a = "The answer is: " + value; System.out.println(a + " what is the question ?");}
反编译类:
public void method1(){ System.out.println("The answer is: 42");}public void method2(int value){ System.out.println((new StringBuilder("The answer is: ")).append(value).toString());}public void method3(int value){ String a = (new StringBuilder("The answer is: ")).append(value).toString(); System.out.println((new StringBuilder(String.valueOf(a))).append(" what is the question ?").toString());}
- 在
method1
编译器上执行编译时的 *** 作。 - 在
method2
该String
级联相当于手动使用StringBuilder
。 - 在
method3
该String
级联的编译器创建第二个肯定是不好的StringBuilder
,而不是重用前一个。
因此,我的简单规则是,除非您需要再次串联结果,否则串联是好方法:例如在循环中或需要存储中间结果时。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)