StringBuilderStringBuffer与“ +”运算符

StringBuilderStringBuffer与“ +”运算符,第1张

StringBuilder / StringBuffer与“ +”运算符

使用

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
    ,而不是重用前一个。

因此,我的简单规则是,除非您需要再次串联结果,否则串联是好方法:例如在循环中或需要存储中间结果时。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存