gpt4 book ai didi

java - 使用 '+' 运算符连接字符串后创建了多少个对象?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:15 27 4
gpt4 key购买 nike

我想问一下在java中执行下面的语句后创建了多少个对象..

String str = "a"+"b"+"c"+"d"

在我看来,只应创建一个对象,即 StringBuilder。请纠正我并解释其背后的逻辑..在此先感谢。

最佳答案

简单的答案是零对象。这是一个编译时常量表达式,字节码编译器将其计算为 "abcd" ... 在创建“.class”文件之前。

实际上,对于现代 JVM,与文字和编译时常量表达式相关联的 String 对象的实例化是惰性的,因此可能会在第一次创建单个 String 对象该语句被执行。但只是第一次

因此,更正确的答案是零个或一个 String 对象,具体取决于:

  • 字符串文字驻留(惰性或急切)的 JVM 实现,以及
  • 这是否是第一次执行任何使用 "abcd" 文字或编译时间常量的语句。

如果从未访问过 str,那么 JIT 编译器可能会优化该语句。

如果您考虑类卸载的可能性,它会变得更加复杂。

关于java - 使用 '+' 运算符连接字符串后创建了多少个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52403817/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com