在Java中编译错误将char添加到int

时间:2016-03-18 13:47:34

标签: java

char c = 'c';
int x = 10;

这是我的问题:当我写c = c + x;我有一个错误,解决方案是铸造c =(char)(c + x); 但是当我写c + = x;没有铸造我没有错误。

之后的输出     c = (char) (c+x); System.out.println(c+x); 是m 但是System.out.println(c+x);之后的输出是119

c + = x之间有什么区别;和c = c + x;在java中

2 个答案:

答案 0 :(得分:2)

c + x的类型为int,因此您无法将其分配回char

System.out.println((char) (c + x))调用PrintStream.println(char)重载,因此打印为char

System.out.println(c + x)调用PrintStream.println(int)重载,因此打印为int

答案 1 :(得分:1)

它是如何定义像+=这样的复合赋值运算符。

请参阅this

  

E1 op = E2形式的复合赋值表达式等效于E1 =(T)((E1)op(E2)),其中T是E1的类型

在您的情况下,c的类型为char,因此在您撰写char时隐含了对c+=x的强制转换。