参见英文答案 >
How do I compare strings in Java? 23个
我试图理解字符串池的工作原理以及字符串与另一个字符串相等的规则是什么.
例如,这个片段:
public static void main(String[] hi){
String s1 = "lol";
String s2 = "lol";
String s3 = new String("lol");
System.out.println( s1 == s2 );// true
System.out.println( s2 == s3); // false
s3.intern(); //line 1
System.out.println( s1 == s3); // false
testString(s1);
}
private static void testString(String s1){
String s4 = "lol";
System.out.println( s1 == s4); // true
}
>在//第1行:字符串被添加到字符串池中.由于它不等于s1,我假设字符串池中有重复.正确吗?
>在池中复制有什么规则?换句话说,即使两个字符串具有相同的char序列,someString == someString何时返回false?
PS:无论如何,我在任何地方都使用string1.equals(string2).我只是想深入了解潜在的机制.