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