[OCAJP]多載和預設數值型態


Given:

What is the result?

A.

int sum is 30
float sum is 30.0

B.

int sum is 30
double sum is 30

C.

Integer sum is 30
double sum is 30.0

D.

Integer sum is 30
float sum is 30.0

題解

doSumg是一個多載(Overload)方法,Java會自動根據傳入的參數數量和型態來決定要使用哪一個doSumg方法。

Java的預設整數型態是int,浮點數型態是double,因此程式會執行第15行和第7行的doSumg方法。

若在程式碼內想使用long或是float的數值型態,可以直接在數值後接上「l」或是「f」來轉型。舉例來說,若將題目的程式第20和21行改成:

則程式執行結果會變成:

float sum is 30.0
float sum is 30.0

這裡長整數long型態的數值因為在SumTest類別中並沒有找到完全符合的doSumg方法,因此會自動往上轉型成有符合方法的float型態。

Integer是Java的Wrapper類別,int型態的數值可以被自動轉型(auto wrapping)成Integer物件。僅當傳入int型態的參數給doSumg方法時,若doSumg方法並沒有定義int和long、float、double等能夠讓int向上轉型的多載方法,才會使用Integer型態的doSumg多載方法。

關於作者

Magic Len

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

相關文章