[OCAJP]數值轉型

Given the code fragment:

What is the result?

A. Sum is 600
B. Compilation fails at line n1.
C. Compilation fails at line n2.
D. A ClassCastException is thrown at line n1.
E. A ClassCastException is thrown at line n2.

題解

line n2的「(s3 * s2)」無法強制轉型至String物件,原因在於數值和字串並沒有人任何的繼承關係,因此會發生編譯錯誤。

至於Wrapper類別與基本數值資料型別在正確的在型別的空間大小下,可以互相轉型,也能自動轉型(auto wrapping)。

若轉型的型態和要轉型的物件有繼承關係,在執行階段才會檢查物件實體的型態,如果無法轉型,會拋出ClassCastException例外。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章