在這種情況下,前兩個語句後變量y
的值是什麼?我假設它是整數7,但我的書上說的對象automatic unboxing
只與關係運算符<>出現。」我有點困惑Integer y
如何變量得到它的價值。任何unboxing
是否發生在newInteger(x)
?使用Integer類別拆箱int值
Integer x = 7;
Integer y = new Integer(x);
println("x == y" + " is " + (x == y))
在這種情況下,前兩個語句後變量y
的值是什麼?我假設它是整數7,但我的書上說的對象automatic unboxing
只與關係運算符<>出現。」我有點困惑Integer y
如何變量得到它的價值。任何unboxing
是否發生在newInteger(x)
?使用Integer類別拆箱int值
Integer x = 7;
Integer y = new Integer(x);
println("x == y" + " is " + (x == y))
Integer x = 7;
在這種情況下,int
字面7被自動盒裝入Integer
可變x
。
Integer y = new Integer(x);
這INV olves將Integer
變量x
自動拆箱爲int
(臨時)變量,該變量被傳遞給Integer
構造函數。換句話說,它是等效於:
Integer y = new Integer(x.intValue());
此語句之後,y
指向一個新的對象比x
不同但包含相同int
包裹值。
當編譯器是某些,你想比較值發生拆箱。使用==
可以比較Objects
,因此給出false
,因爲==
是對象之間的有效操作。由於<
和>
沒有Object < OtherObject
的概念,所以可以肯定你是用數字表示的。
public void test() {
Integer x = 7;
Integer y = new Integer(x) + 1;
System.out.println("x == y" + " is " + (x == y));
System.out.println("x.intValue() == y.intValue()" + " is " + (x.intValue() == y.intValue()));
System.out.println("x < y" + " is " + (x < y));
System.out.println("x.intValue() < y.intValue()" + " is " + (x.intValue() < y.intValue()));
}
X == y是假
x.intValue()== y.intValue()爲真
X < y爲真
x.intValue( )< y.intValue()爲真
在這種情況下是什麼變量y的前兩個語句後的值?
可變y
的值是一個參照包含值7整數對象。
可能重複[什麼比較整數與==做什麼?](http://stackoverflow.com/questions/3689745/what-exactly-does-comparing-integers-with-do) –
@AbimaranKugathasan我明白當==比較兩個對象,但我不明白怎麼y''獲取其值會發生什麼。 – Ian
注意' 「X == Y」 + 「是」 + X == y'的意思是:'( 「X == Y」 + 「是」 + x)的== y',這是不是你想要的。使用括號:' 「X == Y」 + 「是」 +(X == Y)' – Jesper