类型值是否相等"/>
java中比较Long类型值是否相等
目录
问题引入:
一、使用“==”比较
二、使用“equals()”比较
三、基本类型与封装类型之间比较
问题引入:
在某个需求中,需要去比较入参Long类型的值与缓存中Long类型的值是否相等;当我使用的“==”去比较两个值是否相等时发现,数值小于128的均能符合预期;但是当值大于127时,就算两个Long类型的值相同,用==比较时也会判断出为false;
于是就想起来了基本数据类型的装箱与拆箱,对于Long类型的封装类,由于他的值在-128-127之间会被缓存,因此这些值相同的Long型对象会指向同一个对象,使用==比较会返回 true。但是超出这个范围创建的Long型对象就不是同一个对象,这时使用== 也会返回false;
一、使用“==”比较
Long a = 128l;
Long b = 128l;
System.out.println(a==b); // 返回false
Long a = 127l;
Long b = 127l;
System.out.println(a==b); //输出true
二、使用“equals()”比较
使用“equals()"方法比较是比较两个Long对象的数值是否相等,而不是比较两个对象是否指向同一个对象。因此,无论Long对象的值在何种范围内,只要值相等使用”equals()“方法比较都会返回true。
Long a = 128l;
Long b = 128l;
System.out.println(a.equals(b)); //返回true
Long a = 127l;
Long b = 127l;
System.out.println(a.equals(b)); //返回true
三、基本类型与封装类型之间比较
基本类型与封装类型之间若使用”==“比较,会自动进行拆箱操作。也就是说,会把封装类型转成基本类型进行数值的比较,因此 不论数值是否在-128-127之间,基本类型和封装类型之间的”==“”比较总会返回正确的结果。
long a = 128l;
Long b =128l;
System.out.println(a==b); // 返回true
long a = 127l;
Long b = 127l;
System.out.println(a==b); //返回true
更多推荐
java中比较Long类型值是否相等
发布评论