public class TestChar{
public static void main(String[] args){
int i=5;
char c='d';
c=c+(char)i;//编译不通过
c='d'+(char)i;//编译通过
c+=(char)i;//编译通过
c='d'+11//编译通过
c=c+11;//编译不通过
c+=11;//编译通过
c=c+'d';//编译不通过
c+='d';//编译通过
System.out.println(c);
}
}
为什么有些情况能通过编译,有些却不能?=和+=还有什么其他区别么(指char和int相加时)?被这些问题搞得稀里糊涂,有没有一个原则性或指导性的使用规则?
public static void main(String[] args){
int i=5;
char c='d';
c=c+(char)i;//编译不通过
c='d'+(char)i;//编译通过
c+=(char)i;//编译通过
c='d'+11//编译通过
c=c+11;//编译不通过
c+=11;//编译通过
c=c+'d';//编译不通过
c+='d';//编译通过
System.out.println(c);
}
}
为什么有些情况能通过编译,有些却不能?=和+=还有什么其他区别么(指char和int相加时)?被这些问题搞得稀里糊涂,有没有一个原则性或指导性的使用规则?
+=等compund operators会执行隐式类型转换
再有byte short char int这些Integral primitive types变量之间进行混合运算时 会自动提升结果类型为int
你要去看些基本的書
java裡面要相同類型才能+的
要么你就強轉下
public class TestChar{
public static void main(String[] args){
int i=5;
char c='d';
c=c+(char)i;//编译不通过 //java中两个低级相互运算,其结果为能包含它的最小primitive,这里是结果是int
c='d'+(char)i;//编译通过
c+=(char)i;//编译通过 //这里+=运算会进行自动转化的
c='d'+11//编译通过
c=c+11;//编译不通过这里11默认的类型为int,char+int结果当然应该是int
c+=11;//编译通过 //+=运算自动转化
c=c+'d';//编译不通过 //java中两个低级相互运算,其结果为能包含它的最小primitive,这里是结果是int
c+='d';//编译通过 //+=运算自动转化
System.out.println(c);
}
}
]
c=c+11;//编译不通过?
c='d'+11//编译通过
c=c+11;//编译不通过
c+=11;//编译通过
c = c + 11; // 编译不通过c + 11 的结果为int型的,你要把这个int型的值再赋给c(c为char型)int的值赋给char型就会发生精度丢失,所以编译不通过
char c='d'; c是字符型c=c+(char)i;//编译不通过 字符型加字符型是不行的,只有字符串型的就可以用+相连c='d'+(char)i;//编译通过 这时可看作是d的阿斯克码值+5所代表的字符c+=(char)i;//编译通过 此同上c='d'+11//编译通过 此同上c=c+11;//编译不通过 字符型和整型的数据是相加不了的c+=11;//编译通过c的阿斯克码值增加11c=c+'d';//编译不通过 字符型加字符型是不行的,只有字符串型的就可以用+相连c+='d';//编译通过 'd'的阿斯克码值好像是68,那么现在的c就是c的阿斯克码值+68所代表的字符System.out.println(c);
}
}
为什么有些情况能通过编译,有些却不能?=和+=还有什么其他区别么(指char和int相加时)?被这些问题搞得稀里糊涂,有没有一个原则性或指导性的使用规则?
这两句有什么区别啊?还是不明白,ASC码值+int难道结果不是int?
就比如说
char c = 'a'+1;a的asc码为97,这时候变量c的asc码为98,所以变量c = 'b';
'd' + 11 也是一个常量,同理也可以赋给变量,如char ch = 'd' + 11;如果是 char a = 'a';
char ch = a + 1;
a和1就要进行2元运算,这个时候a提升为int型和1相加,
计算结果为int型,最后要把这个结果赋给ch,而ch为char型,把一个int型的值赋给一个char型就会发生精度丢失,所以编译不通过
有点符号的意思在里面,但是绝大部分还是类型转化的问题
特别是+=这个操作是自操作.在自己本身的基础上+什么东西,是没有类型转化的.
其他情况下正如dracularking ,有从低到高的潜式转化在里面...潜式转化部分还是建议参照2L所说,他说的很好.
他是个基础和技术都很好的人