String s1 = new String("abc"); s1.intern(); String s = "abc"; System.out.println(s==s1);返回的结果是什么
时间: 2023-05-19 16:03:34 浏览: 103
答案是 false。因为 s1.intern() 方法会将字符串 "abc" 添加到字符串常量池中,但是 s1 指向的是堆内存中的一个新的字符串对象,所以 s 和 s1 指向的不是同一个对象,所以返回 false。
相关问题
String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2); String s3 = "abc" + s1 + "def"; String s4 = "abcabcdef"; System.out.println(s3 == s4); String s5 = s3.intern(); System.out.println(s4 == s5);
s1和s2的结果是true,因为它们都指向字符串常量池中的同一个字符串对象"abc"。
s3和s4的结果是false,因为s是通过字符串拼接生成的新的字符串对象,在堆内存中分配。而s4是直接指向字符串常量池中的对象"abcabcdef"。
s5的结果是true,因为调用s3.intern()方法后,会在字符串常量池中查找是否存在"abcabcdef"这个字符串对象。由于之前已经创建过,所以s5会指向它。所以s4和s5都指向了同一个字符串对象。
阅读全文
相关推荐










