部分转自http://blog.csdn.net/shaowei213/article/details/39359239
做数据库的时候一般都会有一个主键,这个主键我们常常设置为整型自增的,通过主键来找一个唯一的用户,判断主键是不是这个用户的就成为了系统逻辑中很重要的一环。有一天我把一个User表的id设置为了Integer类型的,然后在一个钱包表里有一个UserId在对User表做映射,用户在操作钱包的时候需要对钱包表的UserId和当前用户的id进行比较,我是这样比较的
if(wallet.getUserId() == user.getId())
但是有时候却验证不对,我怒了就把wallet.getUserId() 和user.getId()都打印到控制台,发现都是245,也就是说是一致的,那为什么if判断为false呢?原因在于包装类和基本数据类型判断方式是不同的
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类型的用==就好