为什么
char ch = '4';
ch = '4' + 2;
Run Code Online (Sandbox Code Playgroud)
工作,但是
char ch = '4';
ch = ch + 2;
Run Code Online (Sandbox Code Playgroud)
不?
我正在学习Java.我发现表达式通常必须转换为某种类型才能正确执行.例如,在算术计算期间,字节被提升为整数,因此以下表达式将引发错误:
byte b = 10;
int i;
i = b*b; //ok, assigning an integer evaluation to an integer variable
b = b*b; // throws error, coz assigning integer evaluation to byte variable
Run Code Online (Sandbox Code Playgroud)
现在,我知道为字符变量分配一个整数是正确的:char a; a = 88;没关系.但是,如果我这样做:
char c2 = 'b', c3 = 'c';
c2 = c2 + c3; //throws error
c2 = (char)(c2 + c3); //works fine
Run Code Online (Sandbox Code Playgroud)
为什么它在没有铸造时会抛出错误?毕竟,右侧仍然是一个整数,因此为字符变量赋一个整数应该可以正常工作.
java ×2