【发布时间】:2017-02-02 21:45:52
【问题描述】:
public static void main(String[] args) {
String[] arr = new String[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = "aaa" + i;
}
System.out.println(arr[0] == "aaa0"); // false
String s = "aaa0";
System.out.println(s == arr[0]); // false
}
我有几个关于该主题的问题可以帮助我理解
与字符串文字不同,字符串数组中的字符串不会自动进入 Sting 池这一事实背后的登录是什么?
我是否正确理解只有字符串文字会隐式进入字符串池?
我是否正确理解 public static void main (public static void main(String[] args)) 中的字符串数组> 不是也去字符串池吗?
【问题讨论】:
-
这不是因为它在一个数组中。这是因为您正在动态创建那些
Strings (arr[i] = "aaa" + i)。 -
@mstorkson 他说的是字符串池,所以有必要展示他的想法。
-
@mstorkson 在我的情况下,通过 == 进行比较对于显示字符串池操作很重要;通过 equals() 一切都将是“真” - 字符串池中和之外的字符串。
-
#2: 正确。 --- #1: 见#2。 --- #3: 正确,又见#2。
标签: java string caching string-pool