判断相等的时候,用 == ,如果两个都是包装类,还会惯性的用 equals ,但碰到一个包装类,一个基本类型的时候,就容易用 == ,这就开启了无尽的找bug之旅。
Long类equals方法的源码:
public boolean equals(Object obj) {
if (obj instanceof Long) {
return value == ((Long)obj).longValue();
}
return false;
}
因为基本类型通过Object一转,就成了包装类,然后再用longValue方法拿到基本类型的数字,接下来就是纯数字用 == 了。
如果外面传进来的是null,是不会通过instanceof的。
Long l = null;
System.out.println(l instanceof Long); //false
详情见
java 判断是不是基本类型_globalcoding的博客-CSDN博客_java判断基本类型
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)