public static void main(String[] args) {
Object o1;
if (true)
o1 = new Integer(5);
else
o1 = new Double(2.0);
Object o2 = true ? new Integer(5) : new Double(2.0);
System.out.println(o1);
System.out.println(o2);
}
在上面的示例代碼中,通過使用條件運算符(?:)我可以在單行中重寫上面的示例。所以,我認爲o1 & o2的結果必須相同。但是,奇怪的是,結果如下:有條件的運算符,奇怪的行爲
5
5.0
難道你們,請幫我指出爲什麼是這種行爲?
修訂: 結果將是用下面的代碼相同的:
Object o2 = true ? (Object) new Integer(5) : new Double(2.0);
我認爲你'Integer'在這兩種情況下,它很奇怪,但只有在打印時的格式是不同的。 – csmckelvey 2014-12-04 03:20:34
是的,o1,o2都是Integer。 – 2014-12-04 03:24:32
我嘗試了通過做instanceof和第二個結果是錯誤.. o1 instanceof Integer'結果爲true,而'o2 instanceOf Integer'結果s false ..所以這意味着o2不是一個整數 – Secondo 2014-12-04 03:25:22