java - Java中的对象生命周期和内存管理?

标签 java string object heap-memory

程序中如下语句,会在堆内存和字符串常量池中创建多少个对象?

我需要清晰地创建对象。我读过的许多资料都没有详细说明。当对象被销毁时,我很困惑。

String a="MAM"+"BCD"+"EFG"+"GFE";

将创建多少个对象?

我正在寻找有关对象、方法和类的生命周期以及 JVM 在动态更改和修改时如何处理它们的好资料。

最佳答案

"MAM"+"BCD"+"EFG"+"GFE" 是一个编译时常量表达式,它编译成 "MAMBCDEFGGFE" 字符串文字。 JVM在加载包含上述代码的类时,会根据这个字面量创建一个String实例,并将这个String放入字符串池中。因此 String a = "MAM"+"BCD"+"EFG"+"GFE"; 不会创建任何对象,请参阅 JLS 15.18.1。字符串连接运算符 +

String 对象是新创建的(§12.5),除非表达式是编译时常量表达式(§15.28)。

它只是将对池中String 对象的引用分配给本地变量a

关于java - Java中的对象生命周期和内存管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18096888/

相关文章:

java - 如何用JLabel创建定时器?

string - Prolog:如何将字符串转换为整数?

javascript - 将对象转换为二维数组但删除键

c++ - 通过对象处理程序删除对象

java - 与线程一起使用的音乐库

java - 将对象添加到 JList 以在滚动 Pane 上显示时遇到问题

java - Tomcat找不到直接放在classes文件夹下的类

string - Fortran 中字符串的续行

Python 字符串计数无法正常工作?

Javascript:常量属性