84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
public class Test { public static void main(String[] args) { String s1 = new String("abc"); String s2 = s1.intern(); System.out.println(s1==s2);这里为什么输出false String s3 = "123"; String s4 = s3.intern(); System.out.println(s3==s4); } }
字串常數池裡面沒有「abc」為什麼下面輸出的結果是false,true?-PHP中文網問答-字串常數池裡面沒有「abc」為什麼下面輸出的結果是false,true?-PHP中文網問答
圍觀一下哦,學習一下。
String s1 = new String("abc"); 生成了常量池中的“adc” 和堆空间中的字符串对象。
String s2 = s1.intern(); 这一行的作用是s1对象去常量池中寻找后发现"abc"已经存在于常量池中了。 然后生成一个s2的引用指向常量池中的“abc”对象。
结果就是 s1 和 s2 的引用地址明显不同。因此返回了false。
String s3 = "123"; 这一行代码会直接去常量池中创建
String s4 = s3.intern(); 发现"123"已经在常量池存在 直接引用指向常量池“123”对象
结果就是s3 和s4 的引用地址相同 返回true
不过jdk1.6 和1.7 有点不同 建议去看看api 或者百度下
字串常數池裡面沒有「abc」為什麼下面輸出的結果是false,true?-PHP中文網問答-字串常數池裡面沒有「abc」為什麼下面輸出的結果是false,true?-PHP中文網問答
圍觀一下哦,學習一下。
String s1 = new String("abc"); 生成了常量池中的“adc” 和堆空间中的字符串对象。
String s2 = s1.intern(); 这一行的作用是s1对象去常量池中寻找后发现"abc"已经存在于常量池中了。 然后生成一个s2的引用指向常量池中的“abc”对象。
结果就是 s1 和 s2 的引用地址明显不同。因此返回了false。
String s3 = "123"; 这一行代码会直接去常量池中创建
String s4 = s3.intern(); 发现"123"已经在常量池存在 直接引用指向常量池“123”对象
结果就是s3 和s4 的引用地址相同 返回true
不过jdk1.6 和1.7 有点不同 建议去看看api 或者百度下