gpt4 book ai didi

java - 访问哪个字符串对象?

转载 作者:行者123 更新时间:2023-12-03 01:57:27 25 4
gpt4 key购买 nike

众所周知,当我们通过 new 关键字创建新的 String 对象时,如下所示:

String str = new String("New String Will Have Two Objects");

它将创建两个对象,一个在 Java 堆内存上,另一个在字符串池上。

那么当我们调用access"str"时会访问哪个字符串对象(堆对象还是字符串池对象)?

根据我的理解,字符串池对象被访问,如果是,那么堆对象会发生什么?

最佳答案

如果您使用 new 创建 String 对象

String str = new String("New String Will Have Two Objects");

在这种情况下,JVM将在普通(非池)堆内存中创建一个新的字符串对象,并且文字“New String Will Have Two Objects”将被放置在字符串常量池中。变量str将引用堆(非池)中的对象。

方法“intern()”用法

This is best described by java docs

当调用 intern 方法时,如果池中已包含由 equals(Object) 方法确定的等于此 String 对象的字符串,则返回池中的字符串。否则,将此 String 对象添加到池中,并返回对此 String 对象的引用。

String str = new String("New String Will Have Two Objects");

str.intern();

关于java - 访问哪个字符串对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31398201/

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