2017-07-27 118 views
5

爲什麼我們不能通過一個char值作爲參數傳遞給接受一個short參數的任何方法,而我們可以在char值傳遞給它的參數是int類型的另一種方法?爲什麼類型鑄造不會發生從charshort,因爲尺寸是相等的?我希望short也可以存儲與short一樣多的值。類型從CHAR在Java中鑄造短

+4

我已經修復了大部分問題,以更好地閱讀英文,但我不明白最後一句:「我希望short也可以存儲足夠多的值以滿足短小的要求」,所以我已經將其作爲它是... –

回答

13

爲什麼我們不能通過一個char值作爲參數傳遞給任何方法接受一個short參數

因爲有從charshort在調用上下文的隱式轉換。

而我們可以通過一個char值到其參數爲int類型的另一種方法?

這是因爲有charint在調用上下文的隱式轉換。

爲什麼類型鑄造沒有發生從charshort,考慮到尺寸是相等的?我希望short也可以存儲與short一樣多的值。

雖然charshort是相同的大小char是無符號,而short簽署。這就是爲什麼沒有從charshort的隱式轉換。

charint的轉化是一個加寬而來自charshort轉換原語轉換(JLS 5.1.2)是變窄原語轉換(JLS 5.1.3)。特別是(重點煤礦):

炭的收縮轉換爲整數類型T同樣簡單地丟棄所有,但n個最低階位,其中n是用於表示類型T. 中的位的數目除了可能丟失有關數值大小的信息之外,這可能會導致結果值爲負數,即使chars表示16位無符號整數值。

6

Java規範表示:

此外,如果表達式的類型是字節的恆定表達(§15.28), 短,char或INT:

的基本收縮如果變量的類型是byte,short或char,則可以使用轉換,並且常量表達式的值可以用變量的類型表示。

Char的最小值爲0,最大值爲65,535。

Short的最小值爲-32,768,最大值爲32,767。

整數的最小值爲-2,147,483,648,最大值爲2,147,483,647。

所以char可以適合整數,但不能簡寫,這就是爲什麼你應該向java保證你想在這裏進行類型轉換。

+0

簡短以及整數都可以保存符號和無符號值,但類型轉換髮生在整數的情況下,但不簡短 –

+0

是的。 Char的最小值爲0,最大值爲65,535。 Short的最小值爲-32,768,最大值爲32,767。整數的最小值爲-2,147,483,648,最大值爲2,147,483,647。所以char可以適合整數,但不能簡寫。 – Max

+0

是的......我知道了。謝謝了很多 –