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中
答案 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
的强制转换。