Java 什么时候应该在String文字上使用String的内部方法
根据String#intern()
,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.
}
我期望s1 and s3 are same
在s3被实习生时将被打印,并且s1 and s2 are same
不会被打印。但是结果是:两行都被打印了。因此,这意味着默认情况下会保留String
常量。但是如果是这样,那为什么我们需要这种intern
方法呢?换句话说,什么时候应该使用这种方法?
回答:
Java自动实习字符串文字。这意味着在许多情况下,==运算符似乎适用于Strings
,其处理方式与ints
或其他原始值的用法相同。
由于Interning
对于String
文字是自动的,因此该intern()
方法将用于使用new String()
使用你的示例:
String s1 = "Rakesh";String s2 = "Rakesh";
String s3 = "Rakesh".intern();
String s4 = new String("Rakesh");
String s5 = new String("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.
}
if ( s1 == s4 ){
System.out.println("s1 and s4 are same" ); // 3.
}
if ( s1 == s5 ){
System.out.println("s1 and s5 are same" ); // 4.
}
将返回:
s1 and s2 are sames1 and s3 are same
s1 and s5 are same
以上是 Java 什么时候应该在String文字上使用String的内部方法 的全部内容, 来源链接: utcz.com/qa/407627.html