我们什么时候应该在字符串文本上使用字符串的terntern方法
根据 String#intern() 的说法,如果在 String 池中找到 String,则方法应该从 String 池中返回 String,否则将在 String pool 中添加一个新的字符串对象,并返回此 String 的引用。intern
所以我试了一下:
String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
if ( s1 == s2 ){
System.out.println("s1 and s2 are same"); // 1.
}
if ( s1 == s3 ){
System.out.println("s1 and s3 are same" ); // 2.
}
我本来以为会被打印出来,因为s3是被拘留的,不会被打印出来。但结果是:两行都被打印出来。这意味着,默认情况下,字符串常量是暂存的。但如果是这样,那么我们为什么需要这种方法呢?换句话说,我们什么时候应该使用这种方法?s1 and s3 are same
s1 and s2 are same
intern