Java三目運算子boolean?condition1:condition2的使用及類型轉換__JAVA

來源:互聯網
上載者:User

     三目運算子<運算式1>?<運算式2>:<運算式3>; "?"運算子的含義是: 先求運算式1的值, 如果為真, 則執行運算式2,並返回運算式2的結果 ; 如果運算式1的值為假, 則執行運算式3 ,並返回運算式3的結果.

       以上是三目運算子的基本定義與使用。表面上看來,應該是比較簡單。在《Java程式員面試寶典》這本書裡,我們見到了了兩道比較有意思的題目。

題目1:【中國東北著名軟體公司D2009年3月筆試題】

int a=5;
System.out.println("a="+((a<5)?10.9:9));

A. 編譯錯誤

B. 10.9

C. 9

D. 以上答案都不對

也許和大多數人一樣,剛開始想當然的以為a<5為false,那麼結果就是9了,選C嘛。

仔細想想,這就是題目設定的陷阱。在運算式=(a<5)?10.9:9中有一個10.9,這是java就會根據運算子的精度進行自動類型的轉換,由於前面是10.9,那麼後面的9也就跟著變為9.0了!

 

題目2:【中國東北著名軟體公司D2009年3月筆試題】

char x='x';
int i=10;
System.out.println(false?i:x);
System.out.println(false?100:x);

A. 120  x

B. 120 120

C. x 120

D. 以上答案都不對

答案為A

解析:System.out.println(false?i:x)與上個題目1相同,x被提升為int類型,所以輸出x的ASCII碼
而對於第二行,由於100是一個常量運算式。若三目運算子中的兩個運算式有一個是常量運算式,另一個是類型T(本題中為char)的運算式,且常量運算式可以被T表示,則輸出結果是T類型。因此輸出是字元

 

核心思想:

1.若三目運算子中的兩個運算式有一個是常量運算式,另一個是類型T的運算式,且常量運算式可以被T表示,則輸出結果是T類型。

2.如果都是常量運算式,用向上類型轉換

 

進入習題模式:

(1)

char x='x';
int i=10;、

System.out.println(false?10000:x);

系統輸出:x

好的,如果修改一下呢

char x='x';
int i=10;、

System.out.println(false?100000:x);

系統輸出是怎樣呢。120。

解析:【核心思想1】10000可以被本題的T類型表示,所以輸出結果為T類型,輸出x;但是換成100000就不行了,因為它超過了ASCII碼範圍。那麼就是就輸出x的ASCII碼值

 

繼續延伸

char x='x';

System.out.println(true?100:x);

這個呢。

解析:同樣適用【核心思想1】,true之後進入condition1.100可以被T類型表示,那麼輸入將是T類型(char 類型),100對應ASCII為d,那麼輸出d.

 

(2)

char x='x';

System.out.println(true?x:10);

System.out.println(true?x:10.0);

好的,第一行應該輸出是x,這個沒有問題。那麼第二行呢。結果:120.0

解析:適用【核心思想1】,但是10.0不能被T類型,那麼輸出將不是T類型。120將升級為double類型變為120.0

 

(3)

System.out.println(fasle?9:10.0);

System.out.println(true?9:10.0);

結果:10.0 9.0

解析:適用【核心思想2】,第一行fasle的結果就是最高類型;第二行9將升級為double類型變為9.0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.