今天遇到一个很奇葩的程序:
public class Llandaff{
public static void main(String argv[]){
Llandaff h = new Llandaff();
h.go();
}
public void go(){
char c = 'c';
int i = 10;
c += i;//ok
c = c + i;//编译错误
}
}
为嘛前面的没有编译错误?java
public class Llandaff{
public static void main(String argv[]){
Llandaff h = new Llandaff();
h.go();
}
public void go(){
char c = 'c';
int i = 10;
c += i;//ok
c = c + i;//编译错误
}
}
为嘛前面的没有编译错误?java
c += i;//ok
凡是使用+=这样的方式都默认自动转换了。。
想更明白一下的话你输出一下c的类型看看
c = c + i;//编译错误 因为char型和int相加会提升到int型