2017-04-24 2 views

答えて

4

Long.equals戻り値true引数がLongの場合のみ、

のjavadocは言う:

は、このオブジェクトを指定されたオブジェクトと比較します。 で、引数がnullではなく、の場合、結果はtrueです。 にはこのオブジェクトと同じlong値が含まれています。

実際、次のコードはtrueを出力として取得します。実装に内部を見

Long value = new Long(0); 
System.out.println(value.equals(new Long(0))); 
System.out.println(value.equals((long) 0)); 
System.out.println(value.equals(0L); 
+0

'value.equals(0L)'もtrueを返します –

3

は、あなたが重要な基準を見つける方法を比較:

if (obj instanceof Long) 



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

同じ値を保持していてもそう他の数値型を渡すと、falseを返します...

Integer i = 0; 

Long l = 0L; 

はその文脈では同じではありません。

0

Longとintを比較しました!
.equalsメソッドも変数の型をチェックしています。ここ
が長いと、INTをcampareするコードである:

int i = 0; 
long l = 0L; 

//v1 
System.out.println(i == l); 
//v2 
Long li = new Long(i); 
Long ll = new Long(l); 
System.out.println(li.eqauls(ll)); 
//v3 
System.out.println(((long)i) == l); 
関連する問題