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 same

s1 and s3 are same

s1 and s5 are same

以上是 Java 什么时候应该在String文字上使用String的内部方法 的全部内容, 来源链接: utcz.com/qa/407627.html

回到顶部