请问为什么
char ch = 'A';
ch += 32;
System.out.println(ch);
能输出结果是a;
而ch = ch+32;
却会报错
ch += 32 :+= 是java语言规定的运算符,java编译器会对他进行特殊处理,进行了隐式转换,所以可以正确编译。
ch = ch+32: 运算时会自动提升表达式的类型 结果会是int 在赋予char 所以需要强制转化,也即是ch = (char)(ch+ 32);
一个简单的记忆方法:
char 两个字节,
int 四个字节,
两者相加取大者。
所以(ch+32) 这个表达式的类型是 int 类型,
而你的 ch 是char 类型,把大的数据类型赋值给较小的要强制转换。
ch+32是int,转换成char需要一个转换
ch = (char)(ch+ 32);
ch+32是int,赋值给char型时要强制转换
ch+32 结果是int类型,int不能直接转char,需要强制转换
ch = (char)(ch+32);