1. 程式人生 > >java--三目運算子 型別自動提升

java--三目運算子 型別自動提升

public static void main(String[] args) {
        int i=99;
        System.out.println("99999判斷結果:"+(true?'a':99999));
        System.out.println("-1判斷結果   :"+(true?'a':-1));
        System.out.println("0判斷結果    :"+(true?'a':0));
        System.out.println("65535判斷結果:"+(true?'a':65535));
        System.out
.println("65536判斷結果:"+(true?'a':65536)); System.out.println("i判斷結果 :"+(true?'a':i)); }
99999判斷結果:97
-1判斷結果   :97
0判斷結果    :a
65535判斷結果:a
65536判斷結果:97
i判斷結果    :97

總結出了以下的結論:
(1)假如表示式1和表示式2具有相同的型別,那麼整個條件運算子結果的型別就是這個型別。
(2)假如一個表示式的型別是T,T是byte或short或char,另一個表示式的型別是int型別的常量表達式,而且這個常量表達式的值是可以用型別T表示的(也就是說,常量表達式的值是在型別T的取值範圍之內),那麼整個條件運算子結果的型別就是T。
(3)除以上情況外,假如表示式1和表示式2的型別不同,那麼將進行型別提升,整個條件運算子結果的型別就是提升後的型別

根據上述結論可以看出,參考結論(2)char型別的取值範圍為0-65535,在char取值範圍中均會返回char型別的值,所以輸出a。-1和65536超出了char的取值範圍,所以型別提升為int型,輸出a對應的ascii碼。最後一條判斷,已經明確了i為int型別,所以根據結論三,型別提升,輸出結果97。