日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java三目運算符(boolean?x:y)

 @IT小小鳥@ 2012-02-28

Java三目運算符(boolean?x:y)

   (1)假如表達式1和表達式2具有相同的類型,那么整個條件運算符結(jié)果的類型就是這個類型。
   (2)假如一個表達式的類型是T,T是byte或short或char,另一個表達式的類型是int類型的常量表達式,而且這個常量表達式的值是可以用類型T表示的(也就是說,常量表達式的值是在類型T的取值范圍之內(nèi)),那么整個條件運算符結(jié)果的類型就是T。
    (3)除以上情況外,假如表達式1和表達式2的類型不同,那么將進行類型提升,整個條件運算符結(jié)果的類型就是提升后的類型。     
     System.out.println(true?x:0);    //line3。
     表達式1是char類型,表達式2是int類型的常量表達式,而且這個常量表達式的值0可以用char類型來表示,因此整個條件運算符結(jié)果的類型就應(yīng)當是char類型,所以輸出的結(jié)果就是'A'。   
System.out.println(true?x:1111111110);    //line4。
表達式1是char類型,表達式2是int類型的常量表達式,但是這個常量表達式的值已經(jīng)超出了char類型的取值范圍,因此要進行類型提升,把char類型提升為int類型,整個條件運算符結(jié)果的類型就是int類型了,所以輸出的結(jié)果是65(字符A的ASCII碼)。   
System.out.println(false?i:x);    //line5。
表達式1是int類型的變量,表達式2是char類型的變量,沒有常量表達式。因此要進行類型提升,把char類型提升為int類型,整個條件運算符結(jié)果的類型就是int類型。所以輸出結(jié)果就是65。
     2、我們再看第二個代碼片段,它的結(jié)果是在編譯階段引發(fā)錯誤。為什么?   
   Test t=flase?new Object():new Test();
我們看到表達式1是Object類型,表達式2是Test類型。沒有常量表達式,類型不同,因此要進行類型提升的。要把Test類型提升為Object類型,因此整個條件運算符結(jié)果的類型應(yīng)當是Object類型。當在賦值的時候要把Object類型賦值給Test類型的變量,當然會引發(fā)編譯錯誤。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多