首页 > 试题广场 >

以下代码 public class Test { ...

[单选题]
以下代码
public class Test {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";
        String str3 = new String("abc");
        System.out.println(str1 == str2); // 1
        System.out.println(str1 == str3); // 2
        System.out.println(str1 == str3.intern()); // 3
    }
}
请问这3处打印语句,输出分别是什么?
  • true true true
  • true false true
  • false false false
  • false true true
  • str1 == str2:true,因为它们都指向常量池中的同一个字符串。
  • str1 == str3:false,因为 str3 是堆内存中的一个新对象。
  • str1 == str3.intern():true,因为 intern() 返回的是常量池中的字符串。
发表于 2025-03-15 16:55:27 回复(0)
Java语言规范中,
值为常量的字符串,都会通过String.intern()函数被限定为共享同一个对象
发表于 2020-03-22 19:09:08 回复(0)