你是否遇到过用==判断两个Long类型是否相等结果却是有时候相等有时候不等!
小朋友你是否有很多疑问🤔️?
首先区分下定义:long和Long是两个不同的类型!
1.long是基本类型,默认值是0。2.Long是对象类型,默认值是null。
2.Java里面对处在在-128 ~ 127之间的Long(Integer)值,用的是原生数据类型int,会在内存里供重用,也就是说这之间的Long(Integer)值进行比较时只是进行int原生数据类型的数值比较,而超出-128 ~ 127的范围,会new一个新对象存储,进行比较时是进行地址及数值比较,那么超过128就肯定不相等了。所以Long类型直接通过 == 比较就得不到正确的结果!
3.那么Long类型怎么比较大小呢?可以用longValue() 或者equals()进行比较!注:equals()源码实际上也是用longValue()转成long进行比较。