java - 每次我使用 String 时,它都会创建一个新的 String 对象吗?

标签 java string hashmap

假设我需要从 Java HashMap 中迭代地检索相同键的值。

  for(int i=0; i<INTEGER.MAX; i++)   
          map.get("KEY");

在这种情况下,每次调用 map.get("KEY") 时是否都创建了“KEY”字符串?我想知道拥有一个 String 常量是否总是更好,或者这无关紧要。

最佳答案

没有。字符串常量会自动驻留,因此任何相同的字符串文字都引用内存中的同一个对象。

关于此的更多信息:http://www.xyzws.com/Javafaq/what-is-string-literal-pool/3

一个这样的例子:

String s1 = "Test";
String s2 = "Test";
String s3 = new String("Test");
s1 == s2;//Evaluates to true, because they are the same object (both created with string literals)
s1 == s3;//Evaluates to false, because they are different objects containing identical data

关于java - 每次我使用 String 时,它都会创建一个新的 String 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24704896/

相关文章:

c - C 中的 hexlify 和 unhexlify 函数

c++ - 为什么在函数参数中将字符串作为常量字符串传递

java - 如何将 HashMap 的所有值都小写?

go - 将通用映射转换为 YAML。语言

java - 如何计算具有相同键的不同 HashMap 的值之和?

java - 寻找方法来缩短文本对齐数组的代码

Java后端: Guarantee two Facebook users are friends

python - 如何在尚未被空格包围的破折号前后插入空格?

java - 高复制环境的持久性策略(Google App Engine)

java - 使用 Spring Web MVC validator 类的服务器端验证