我有以下幾行代碼來比較String。str1不等于str2,這是可以理解的,因為它比較了對象引用。但是,為什么s1等于s2?String s1 = "abc";String s2 = "abc";String str1 = new String("abc");String str2 = new String("abc");if (s1==s2) System.out.println("s1==s2"); else System.out.println("s1!=s2");if (str1==str2) System.out.println("str1==str2"); else System.out.println("str1!=str2");if (s1==str1) System.out.println("str1==s1"); else System.out.println("str1!=s1");輸出: s1==s2 str1!=str2 str1!=s1
3 回答

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
s1和s2是字符串文字。創建新的String文字時,編譯器首先檢查String池中是否存在任何表示該文字的文字。如果存在,則編譯器返回該文字,否則編譯器將創建一個新的。
創建String時s2
,編譯器s1
將從池中返回String ,因為之前已經創建了它。這就是為什么s1
和s2
相同的原因。這種行為稱為實習。
添加回答
舉報
0/150
提交
取消