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,java,jvm,开发语言)