请看如下这段关于字符串初始化的测试代码,以下哪一项的输出结果是正确的? public class StringTest { public static void main(String[] args) { String s1 = new String("程序员"); String s2 = s1.intern(); String s3 = "程序员"; System.out.println(s1 == s2); System.out.println(s3 == s2); String str1 = "str"; String str2 = "ing"; String str3 = "str" + "ing"; String str4 = str1 + str2; String str5 = "string"; System.out.println(str3 == str4); System.out.println(str3 == str5); System.out.println(str4 == str5); } }
时间: 2024-02-12 16:11:01 浏览: 75
有关String的测试程序包含string内部一些函数
选项 D 中的输出结果是正确的。
在该代码中:
1. 对于字符串 "程序员",使用 new String() 方式创建的 s1 对象和使用 String.intern() 方法创建的 s2 对象,虽然它们的值是相等的,但是它们的引用地址并不相等,因此 s1 == s2 的结果是 false;而字符串 "程序员" 直接赋值给 s3,则 s3 和 s2 指向同一个字符串对象,因此 s3 == s2 的结果是 true。
2. 字符串常量 "str" 和 "ing" 直接相加,得到的结果是 "string",这是因为 Java 编译器会对字符串常量进行优化,在编译时就将字符串常量相加的结果计算出来。因此,字符串 str3 和 str5 指向同一个字符串常量对象,它们的引用地址相等,因此 str3 == str5 的结果是 true。
3. 字符串变量 str1 和 str2 进行相加得到的字符串 str4 是一个新的字符串对象,它的引用地址与字符串常量 "string" 不相等,因此 str3 == str4 和 str4 == str5 的结果都是 false。
因此,选项 D 中的输出结果为:
false
true
false
true
true
阅读全文