Long 类型判断相等

场景

在项目中,定义了一个 Integer 类型的DEFAULT_VALUE 默认值,但在查询学生数量时,定义的是Long类型,在使用equals比较相等时,与预期不符合

public class LongAndInteger {
    private final  static  Integer DEFAULT_VALUE = 0;
    public static void main(String[] args) {
        Long studentCount = 0L;
        System.out.println(studentCount.equals(DEFAULT_VALUE)); // false
     }
}

至于为何会出现上述的结果,直接看下Long.equals()方法

   public boolean equals(Object obj) {
        if (obj instanceof Long) {
            return value == ((Long)obj).longValue();
        }
        return false;
    }

可以看到,首先判断是否为Long 类型,如果不是,直接放回false

因为DEFAULT_VALUE 是定义的Integer类型,直接就返回了false

解决方案

① 获取Long的具体值来判断
studentCount.intValue() == DEFAULT_VALUE

② 将studentCount 定义为Integer 类型

posted @ 2021-03-31 14:23  XuTingYin  阅读(553)  评论(0)    收藏  举报