JAVA Long类型可以直接用==比较吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA Long类型可以直接用==比较吗?相关的知识,希望对你有一定的参考价值。

这个要看具体情况,如果Long值在-128到127之间的话就可以直接比较,如果超出了这个范围则不行。 参考技术A 数值型的都可以用“==”来进行值的比较

两个 Long 类型为什么不能直接用==比较

这要说到==和 equals 的区别了。

1. ==比较的是两个对象在内存中的地址值(栈中的内容)。

2.equals 是 java.lang.Object 类的一个方法。equals 比较的是两个对象的内容(堆中的内容)。java 中所有的类都默认继承于 Object,所以所有的类都有这个方法。

但是 Long 是一个对象,是对 long 的封装。我们看一下 Long 对象的源码,里面的 equals 方法是这么写的:

1     public boolean equals(Object obj) {
2         if (obj instanceof Long) {
3             return value == ((Long)obj).longValue();
4         }
5         return false;
6     }

所以两个 Long 类型的变量进行比较的话,要么用 equals,要么先调用longValue 方法,拿到里面的 long 值之后再进行==比较。

 

以上是关于JAVA Long类型可以直接用==比较吗?的主要内容,如果未能解决你的问题,请参考以下文章

两个 Long 类型为什么不能直接用==比较

两个 Long 类型为什么不能直接用==比较

java中 Long类型能直接和int类型比较大小了?

java中long型怎么比较大小

java中两个Double型数据可以用(>,<,==,>=,<=)进行比较吗? 请详细说明

在JAVA中怎么比较Double类型数据的大小