在java中發現了一些奇怪的東西。java中的奇怪事物
代碼:
System.out.println(System.getProperty("java.version"));
System.out.println((true) ? (int)2.5 : 3.5);
System.out.println((true) ? (int)2.5 : 3);
System.out.println((true) ? (int)2.5 + "" : 3.5);
結果:
1.8.0_40 2.0 2 2
這是什麼?爲什麼整數值只有在false的值不是double或字符串值爲true時才返回?爲什麼在第二行舍入由(int)強制轉換工作,但雙值返回呢?這是一個錯誤嗎?
不,這些東西不是bug。 – Jesper
就編譯器而言,整個'':'表達式只有一種類型,它通過找出兩邊共同的最窄類型來表示這一點。 –
(我坦白,我很驚訝,最後一行編譯,雖然。) –