245不等于245的时候——基本数据类型和包装类的区别

部分转自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类型的用==就好

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容