国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

J2SE綜合 使用條件運算符的陣痛

2019-11-18 15:33:46
字體:
供稿:網(wǎng)友

  一、案例編號:

U02C09

二、案例名稱:

使用條件運算符的陣痛

三、要害詞:

條件運算符、三目運算符、三元運算符、類型轉(zhuǎn)換

四、案例情景描述:

    條件運算符有三個操作數(shù)。它的形式是:boolean-eXP?exp1:exp2。它首先計算boolean表達式的值,假如為true那么整個表達式的值就是表達式exp1的值,假如boolean表達式的值為false,那么整個表達式的值就是exp2的值。

int k=(2>3)?23:45;因為boolean表達式2>3為false,所以k的值是45。

上述都是關于條件運算符值的確定,那么條件運算符值的類型又是怎么確定的呢?看下述代碼:

(1)
char x=‘A’;    //line1
int i=0;    //line2
System.out.PRintln(true?x:0);    //line3
System.out.println(true?x:1111111110);    //line4
System.out.println(false?i:x);    //line5

(2)
/*
*假設Test是已經(jīng)定義的某個類
*/
Test t=flase?new Object():new Test();

五、案例理論分析:

1、我們先看第一個代碼片段:三個輸出語句會輸出什么結果呢?

你也行會認為輸出結果是:
'A'
'A'
'A'

當你運行一下這段代碼,它的真正結果是:
'A'
65
65

為什么會有這樣的結果呢?實質(zhì)上這就是條件運算符對于運算結果類型的限制:

(1)假如表達式1和表達式2具有相同的類型,那么整個條件運算符結果的類型就是這個類型。

(2)假如一個表達式的類型是T,T是byte或short或char,另一個表達式的類型是int類型的常量表達式,而且這個常量表達式的值是可以用類型T表示的(也就是說,常量表達式的值是在類型T的取值范圍之內(nèi)),那么整個條件運算符結果的類型就是T。

(3)除以上情況外,假如表達式1和表達式2的類型不同,那么將進行類型提升,整個條件運算符結果的類型就是提升后的類型。

    System.out.println(true?x:0);    //line3。表達式1是char類型,表達式2是int類型的常量表達式,而且這個常量表達式的值0可以用char類型來表示,因此整個條件運算符結果的類型就應當是char類型,所以輸出的結果就是'A'。

    System.out.println(true?x:1111111110);    //line4。表達式1是char類型,表達式2是int類型的常量表達式,但是這個常量表達式的值已經(jīng)超出了char類型的取值范圍,因此要進行類型提升,把char類型提升為int類型,整個條件運算符結果的類型就是int類型了,所以輸出的結果是65(字符A的ASCII碼)。

    System.out.println(false?i:x);    //line5。表達式1是int類型的變量,表達式2是char類型的變量,沒有常量表達式。因此要進行類型提升,把char類型提升為int類型,整個條件運算符結果的類型就是int類型。所以輸出結果就是65。

2、我們再看第二個代碼片段,它的結果是在編譯階段引發(fā)錯誤。為什么?

    Test t=flase?new Object():new Test();我們看到表達式1是Object類型,表達式2是Test類型。沒有常量表達式,類型不同,因此要進行類型提升的。要把Test類型提升為Object類型,因此整個條件運算符結果的類型應當是Object類型。當在賦值的時候要把Object類型賦值給Test類型的變量,當然會引發(fā)編譯錯誤。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 获嘉县| 成安县| 三门县| 朔州市| 萨迦县| 神农架林区| 颍上县| 华阴市| 沽源县| 雷山县| 天祝| 鄂伦春自治旗| 仲巴县| 马尔康县| 墨竹工卡县| 迁安市| 定结县| 龙井市| 琼海市| 张家界市| 云安县| 茌平县| 闽清县| 巩留县| 湛江市| 贵阳市| 长春市| 淮滨县| 资阳市| 张掖市| 曲水县| 格尔木市| 页游| 台东市| 金塔县| 白山市| 永丰县| 剑川县| 娱乐| 古交市| 湖南省|