String test = (String)String.valueOf(((char) 0 + 65));
System.out.println( test);
test = "A";
System.out.println(test);
第一个产生65,另一个产生A.它们应该产生相同的东西。
答案 0 :(得分:4)
您按错误的顺序执行此操作。首先,您将零转换为char
,然后添加65,这是对int
的隐式转换。首先需要添加值,然后进行强制转换。
String test = String.valueOf((char)( 0 + 65));
然后您的代码产生预期结果:
A
A
答案 1 :(得分:1)
这是由于操作员优先级(铸造,相对于添加)不符合您的预期。
您希望首先发生0 + 65
,然后然后,以便将结果转换为char。但是,强制转换比添加更紧密,因此首先发生(char) 0
,然后将其添加到65。
由于这是两个数字加在一起,结果是数字65,这就是转换为字符串的结果(因此产生两个字符串['6', '5']
。
您可以稍后使用括号围绕算术表达式进行转换:
String.valueOf((char)(0 + 65))
答案 2 :(得分:0)
第一个表达式与
相同(char) 0 + 65
是
`\0` + 65
是
(int) `\0` + 65
或
65
这是因为施法优先。
要获得一个字符类型和A
,您需要在进行计算后进行投射
char ch = (char) (0 + 65)
System.out.println(ch);