Java條件表達式結果類型的規則

條件表達式結果類型轉換規則:

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----------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章