作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
<分区>
我想了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是什么。
例如这个片段:
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,所以我假设字符串池中有重复项。正确吗?
池中有重复项的规则是什么?换句话说,即使两个字符串具有相同的字符序列,someString == someString
何时返回 false?
附言:无论如何,我到处都使用 string1.equals(string2)。我只是想更深入地了解底层机制。
我是一名优秀的程序员,十分优秀!