java中Long型別比較大小和long型別的比較大小
阿新 • • 發佈:2019-09-06
今天遇到這樣一個問題,我用 "=="來比較兩個Long型別的資料,明明數值都相等,可是結果就是false
這要說到==和 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