2014-03-24 117 views
0
int x = 10; 
int y = 10; 

Integer x1 = new Integer(10); 
Integer y1 = new Integer(10); 

System.out.println(x == y); 
System.out.println(x1 == y1); 

第一個sop將打印爲真,而第二個將打印爲false。什麼是實際問題?如何正確使用原始類型

+4

這種問題已經被問過/回答了很多次...先做一些谷歌 – Kent

+0

第二個有不同的對象如此虛假 – Yubaraj

+3

[java:Integer equals vs. ==](http:// stackoverflow。 COM /問題/ 3637936/Java的整數等於-VS) – Julien

回答

2

第二種方法不檢查值而是檢查對象。

如果你想比較2個整數的值對象,您必須使用適當的方法一樣,如果你想檢查平等不僅可以使用在評論中提到compareTo(Integer)

equals

2

的第二個是比較對象Id's.Since每個對象都有一個唯一的Id它返回false。

0

第一SOP打印正確的,因爲INT x和y包含相同的比特模式爲10

在第二種方法中X1和Y1是整數類型的兩個不同的對象的參考變量,以便它們是指向不同的對象在內存中,這就是爲什麼在第二個Sop你會得到錯誤的。

如果要檢查兩個整數的平等,你可以使用

x1.equals(y1) 

,它將返回true。