我有以下代码
class arr
{
public static void main(String a[])
{
char c='A';
c+=10;
System.out.println(c);
}
}
从java 8编译时,它编译成功。
output
K
但是当我编译下面的代码时:
class arr
{
public static void main(String a[])
{
char c='A';
c=c+10;
System.out.println(c);
}
}
我收到以下错误:
logic.java:6: error: incompatible types: possible lossy conversion from int to char
c=c+10;
^
我不明白c=c+10
和c+=10
同样的事情,为什么我会收到这样的错误?
请帮我。谢谢。
答案 0 :(得分:6)
编译器为你做char += int
它基本上将c+=10;
更改为c = (char)(c + 10);
但是,c=c+10;
没有隐式转换,因此无法编译。
这是oracle docs关于其工作方式的链接; Compound Assignment Operators
答案 1 :(得分:1)