如果我比较String str1 ==
str3的引用,则它将返回false,因为str3是使用新String创建的,因此不会驻留在String池中,那么str1 == strArray1
[1]如何返回true?
String strArray1[] = new String[]{"Hello","Hello"};创建一个新的String数组,其中引用了array *中 相同的字符串 "hello"。
strArray [0] == strArray [1]将返回true,strArray1 [0] == strArray1
[1]也返回true,那么为什么命令行参数args [0] == args [1]返回false?
args[0]==args[1]返回
false,因为它们是2个 不同的 实例(未添加到String池中),所以就像
newString()。您可以使用以下命令轻松测试:
System.out.println(System.identityHashCode(args[0])); System.out.println(System.identityHashCode(args[1]));
因此,参数传递给
main()正在 不 添加到 字符串常量池 。



