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

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

兩個 Long 類型爲何不能直接用==比較html

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

1. ==比較的是兩個對象在內存中的地址值(棧中的內容)。spa

2.equals 是 java.lang.Object 類的一個方法。equals 比較的是兩個對象的內容(堆中的內容)。java 中全部的類都默認繼承於 Object,因此全部的類都有這個方法。code

可是 Long 是一個對象,是對 long 的封裝。咱們看一下 Long 對象的源碼,裏面的 equals 方法是這麼寫的:htm

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

因此兩個 Long 類型的變量進行比較的話,要麼用 equals,要麼先調用longValue 方法,拿到裏面的 long 值以後再進行==比較。對象

Long在java中是一個引用類型,而long類型是java中的一個基本數據類型,用來表示數值blog

Long類型數據比較:
1.Long對象的.equals()方法:繼承

Long l1 = new Long(10);內存

Long l2 = new Long(10);get

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.println(l1 > l2)

相關文章
相關標籤/搜索