Java 我们写东西时创建了多少个对象
我在某处读到JVM创建2个对象,第一个在池中,第二个在堆中Java 我们写东西时创建了多少个对象,java,string,jvm,Java,String,Jvm,我在某处读到JVM创建2个对象,第一个在池中,第二个在堆中 这是真的吗?如果是真的,那么为什么JVM在已经有一个对象的情况下创建了2个对象呢 是的,你是对的。它创建两个对象。一个在字符串常量池中,另一个在堆中指向字符串池的对象 如果考虑字符串STR =“hello”/string字符串,它只在字符串常量池中由JVM创建一个对象。 根据您的语法(stringstr=newstring(“xyz”)//stringobject),JVM创建2个对象。一个在字符串池中,另一个在堆中) 如需进一步参考,
这是真的吗?如果是真的,那么为什么JVM在已经有一个对象的情况下创建了2个对象呢 是的,你是对的。它创建两个对象。一个在字符串常量池中,另一个在堆中指向字符串池的对象
您正在使用新关键字。。。。这将是堆。。。不是字符串pool这是真的,这是真的,因为你让它这么做。@LouisWasserman我的问题是JVM为什么要创建两个对象,因为JVM需要为
“xyz”
创建一个对象,然后你让它创建另一个对象,一个对象的副本。池与此无关。两个String
实例都存储在堆中,原因很简单,因为在Java编程语言中,术语“heap”就是这样定义的,即所有Java对象的存储空间。字符串池仅包含对字符串实例的引用。但在幕后,至少有一个数组保存实际的字符数据,在Java中,数组也是对象。根据JRE版本的不同,甚至可能有两个数组,但在最近的JRE中,数组在两个字符串之间共享。
String str=new String ("xyz");