245不等于245的時(shí)候——基本數(shù)據(jù)類型和包裝類的區(qū)別

部分轉(zhuǎn)自http://blog.csdn.net/shaowei213/article/details/39359239

做數(shù)據(jù)庫的時(shí)候一般都會有一個(gè)主鍵,這個(gè)主鍵我們常常設(shè)置為整型自增的,通過主鍵來找一個(gè)唯一的用戶,判斷主鍵是不是這個(gè)用戶的就成為了系統(tǒng)邏輯中很重要的一環(huán)。有一天我把一個(gè)User表的id設(shè)置為了Integer類型的,然后在一個(gè)錢包表里有一個(gè)UserId在對User表做映射,用戶在操作錢包的時(shí)候需要對錢包表的UserId和當(dāng)前用戶的id進(jìn)行比較,我是這樣比較的

if(wallet.getUserId() == user.getId())

但是有時(shí)候卻驗(yàn)證不對,我怒了就把wallet.getUserId() 和user.getId()都打印到控制臺,發(fā)現(xiàn)都是245,也就是說是一致的,那為什么if判斷為false呢?原因在于包裝類和基本數(shù)據(jù)類型判斷方式是不同的

        Integer num1 = new Integer(1);
        Integer num2 = new Integer(1);
        System.out.println(num1 == num2);//false
        System.out.println(num1.equals(num2));//true

所以當(dāng)兩個(gè)要比對id的實(shí)體類里面的id類型是Integer而不是int的話就需要使用equals來進(jìn)行比對,如果是int類型的用==就好

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容