2016-03-08 88 views

回答

4

你這樣做的順序是錯誤的。首先你將零投射到char,並且你添加65,這是隱含投射到int。您首先需要添加值,然後進行演員。

String test = String.valueOf((char)(0 + 65)); 

然後代碼產生預期的結果:

A 
A 
0

第一個表達式是相同的

(char) 0 + 65 

`\0` + 65 

這是

(int) `\0` + 65 

65 

這是因爲鑄造優先。

爲了得到一個char類型和A你需要投你做計算

char ch = (char) (0 + 65) 
System.out.println(ch); 
1

這是由於運算符優先級(鑄造的,相對於加)後不是你所期望的。

您希望0 + 65先發生,然後然後將結果轉換爲字符。但是,投射比添加更緊密,所以(char) 0首先發生,然後它被添加到65.

由於這是兩個數字加在一起,結果是數字65,這是什麼被轉換成一個字符串(所以導致兩個字符串['6', '5']

您可以鑄造與周圍的算術表達式支架後發生:

String.valueOf((char)(0 + 65)) 
相關問題