1. 程式人生 > >java中Long型別比較大小和long型別的比較大小

java中Long型別比較大小和long型別的比較大小

今天遇到這樣一個問題,我用 "=="來比較兩個Long型別的資料,明明數值都相等,可是結果就是false

兩個 Long 型別為什麼不能直接用==比較

這要說到==和 equals 的區別了。

1. ==比較的是兩個物件在記憶體中的地址值(棧中的內容)。

2.equals 是 java.lang.Object 類的一個方法。equals 比較的是兩個物件的內容(堆中的內容)。java 中所有的類都預設繼承於 Object,所以所有的類都有這個方法。

但是 Long 是一個物件,是對 long 的封裝。我們看一下 Long 物件的原始碼,裡面的 equals 方法是這麼寫的:

public boolean equals(Object obj) {
     if (obj instanceof Long) {
         return value == ((Long)obj).longValue();
     }
     return false;
 }

所以兩個 Long 型別的變數進行比較的話,要麼用 equals,要麼先呼叫longValue 方法,拿到裡面的 long 值之後再進行==比較。

Long在java中是一個引用型別,而long型別是java中的一個基本資料型別,用來表示數值

Long型別資料比較:
1.Long物件的.equals()方法:

Long l1 = new Long(10);

Long l2 = new Long(10);

System.out.println(l1.equals(l2));

2.Long物件的longValue()方法

Long l1 = 

new Long(10);

Long l2 = new Long(10);

System.out.println(l1.longValue() == l2.longValue());

long型別資料的大小比較:

可以直接用 '>' '=' '<'比較

long l1 = 10;

long l2 = 15;

System.out.println(l1 == l2);

System.out.print