條件表達式結果類型轉換規則:
System.out.println(false ? 1.0 : 1);
輸出: 1.0
不應該輸出成: 1
System.out.println( false ? 1 : 'a');
輸出: a
System.out.println( false ? 1.0 : 'a');
輸出: 97.0
什麼表達中1變成1.0,就會輸出'a'呢?
System.out.println( true ? 98 : 'a');
輸出: b
同上
System.out.println( true ? 98.0 : 'a');
輸出:98.0
同上
Java條件表達式,注意以下幾點:
1、如果冒號兩邊,是同一種類型,那麼該條件表達式的值也是同一種類型。
2、如果其中一邊的類型是byte、short或者char(暫且統稱爲X類型),而且另外一邊是int常量(注意是常量),而且這個常量可以用X類型表示(也就是不溢出),那麼,結果就是X類型。比如:
System.out.println( true ? 98 : 'a'); 輸出: b
3、如果不符合上述情況的,則自動隱式轉換,即小範圍的轉換成大範圍的,低精度的轉換成高精度的類型,最後的結果就是轉換後的類型。比如:
System.out.println( false ? 1.0 : 'a'); 輸出: 97.0
-----------------------------------------------------------http://blog.csdn.net/jimmy_lee1106/article/details/30038367----------------------------------------------