部分轉(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類型的用==就好