java - 在普通内存和字符串池中创建新字符串

标签 java string string-pool

如果例如:

String str1 = “abc”;
String str2 = new String(“def”);

那么,

案例1:String str3 = str1.concat(str2)会进入堆还是池?

案例2:String str4 = str2.concat(“HI”)会进入堆还是池?

最佳答案

在java中,无论你使用new关键字创建哪个字符串,都将在堆内存中创建。如果你创建任何字符串而不使用new,它将在字符串池中创建,并且将被称为字符串常量。字符串常量池值只有一份副本,这意味着字符串池中不会存在重复项。

关于java - 在普通内存和字符串池中创建新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956404/

相关文章:

java - 创建并有机会从字符串池中创建 String 对象有什么意义

java - 同一变量的堆内存分配

java - 计算两个日期之间的天数

java - 从菜单按钮启动 Activity ?

java - 连接到 websocket 时出现状态 200,但这是一个错误?

java - org.openqa.selenium.WebDriverException : connection refused while using Selenium Java and webdriver (linux headless with Xvfb)

c - 从另一个数组填充 C 中的 char 数组

java - 用字符串替换字符串中的特定字符?

string - F# printf 字符串

java - 需要了解的String、String常量池和String intern方法