我有以下几行代码来比较String。str1不等于str2,这是可以理解的,因为它比较了对象引用。但是,为什么s1等于s2?String s1 = "abc";String s2 = "abc";String str1 = new String("abc");String str2 = new String("abc");if (s1==s2) System.out.println("s1==s2"); else System.out.println("s1!=s2");if (str1==str2) System.out.println("str1==str2"); else System.out.println("str1!=str2");if (s1==str1) System.out.println("str1==s1"); else System.out.println("str1!=s1");输出: s1==s2 str1!=str2 str1!=s1
1 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
s1和s2是字符串文字。创建新的String文字时,编译器首先检查String池中是否存在任何表示该文字的文字。如果存在,则编译器返回该文字,否则编译器将创建一个新的。
创建String时s2
,编译器s1
将从池中返回String ,因为之前已经创建了它。这就是为什么s1
和s2
相同的原因。这种行为称为实习。
添加回答
举报
0/150
提交
取消