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

部分轉自http://blog.csdn.net/shaowei213/article/details/39359239

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

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

但是有時候卻驗證不對,我怒了就把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

所以當兩個要比對id的實體類里面的id類型是Integer而不是int的話就需要使用equals來進行比對,如果是int類型的用==就好

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容