gpt4 book ai didi

java - 当我们使用 new 运算符时,究竟什么时候在字符串常量池中创建对象。?

转载 作者:行者123 更新时间:2023-11-30 06:52:13 26 4
gpt4 key购买 nike

String s = new String(“hello”); 

这里会创建两个对象,一个在堆内存中,另一个在字符串池中。

那么,intern()方法有什么用呢?执行上述语句后,字符串"hello"将在堆和字符串池中可用

最佳答案

首先。 String s = new String(“hello”); 创建了一个不必要的字符串,不应使用。接下来,调用 s = s.intern() 将确保返回添加到 SCP 的“hello”,因此在堆上创建的第二个字符串将符合 GC 条件。

intern() 将字符串添加到 SCP(如果它不存在)。当您知道一个 String 被多次使用但您不能使用 literal 创建它时,通常会使用它。因此,您可以使用 intern 并确保只有一个字符串被放入 SCP 并在 1000 个地方(以及所有堆上具有相同值的其他字符串有资格进行 GC)

关于java - 当我们使用 new 运算符时,究竟什么时候在字符串常量池中创建对象。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39388162/

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