str1 == str2將返回true,為什么呢?Java中的基本數據類型使用"=="可以判斷操作數是否相等,對于對象則判斷這兩個對象的內存地址是否相同。Java虛擬機為了提高字符串應用效率,提供了字符串池來保存字符串常量,str1創建字符串常量"abc"時,虛擬機會先檢測字符串池中是否包含該字符串,如果不包含則創建該字符串常量,并將其保存在字符串池中,然后再返回。str2也賦值為"abc",這時字符串池中已存在該字符串,不再創建,直接返回該字符串。也就是str1、str2引用同一個字符串,地址是相同的,因此str1 == str2成立。但是使用new關鍵字創建的字符串會新開辟內存看空間,因此str2 == str3不成立。——以上內容摘自《Java開發實戰1200例(第Ⅰ卷)》