我们写的时候会创建多少个对象

时间:2017-11-20 19:18:53

标签: java string jvm

String str=new String ("xyz");

我在某处读到JVM在池中创建了2个对象,在堆中创建了第2个对象。

这是真的吗?如果为真,那么为什么JVM创建2个对象时,有人可以解释?

2 个答案:

答案 0 :(得分:1)

是的,你是对的。它创建了两个对象。一个在String Constant Pool中,另一个在Heap中指向String池。

  1. 如果我们考虑String str =" Hello" //字符串文字,它在字符串常量池中由JVM只创建一个对象。
  2. 根据您的语法(String str = new String(" xyz")// String对象)JVM创建2个对象。一个在字符串池中,另一个在堆中)。
  3. 如需进一步参考,请查看以下讨论: String s = new String("xyz"). How many objects has been made after this line of code execute?

答案 1 :(得分:0)

" XYZ"一旦加载了类,它就处于常量池中 当该行实际运行时,str被放在堆上

Where does Java's String constant pool live, the heap or the stack?