Java 中字符串相加,jvm优化

  1. 字符串常量相加,jvm 会进行优化,不会创建 StringBuilder 对象

String a = "Hello" + "world" + "!";

  1. 字符串变量加上常量,会创建 StringBuilder 对象,然后调用 append 方法

String a = "Hello";
a += "top";
a += "bottom";

可以看到,两个加号,创建了两个 StringBuilder 对象

  1. for 循环中的字符串变量加上常量,会被优化成 StringBuilder.append(),多次相加只会创建一个 StringBuilder 对象

1String a = "Hello";
for (int i = 0; i < 5; i++) {
  a += "world";
}

image.png

javap -c -l [class文件名] 得到上图的 java类反汇编、常量池、变量表、指令代码行号表等等信息

转载于:https://www.cnblogs.com/ainsliaea/p/10696191.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要内容 System类 StringBuilder类 包装类 1.System类 java.lang.Syste...
    program_white阅读 497评论 0 0
  • 1.Object Object是超类:String中的equals()重写过了。Object的equals()是采...
    XAbo阅读 261评论 0 0
  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 865评论 1 6
  • 前言 RTFSC (Read the fucking source code )才是生活中最重要的。我们天天就是要...
    二毛_coder阅读 466评论 1 1
  • 从网上复制的,看别人的比较全面,自己搬过来,方便以后查找。原链接:https://www.cnblogs.com/...
    lxtyp阅读 1,360评论 0 9