2016-03-08 52 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)) 
相关问题