char ch = 'A';
ch += 32;. //This works fine
ch = ch + 32; //this doesn't work
尽管第2行代表相同的操作,但为什么第2行却不起作用?
答案 0 :(得分:4)
为什么不使用Character类静态方法?
https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html
Character.toUpperCase(ch)
尽管要回答您的问题,但是java要求您在赋值期间降低精度时强制转换基元,因此,在righand站点上具有32bit int,在左侧16bit则需要显式进行强制转换。因此,当右侧为int时,您需要进行强制转换。如果强制转换为char,则代码可以正常工作。仍然只是使用角色类
long l = 34; //this is fine
int i = 2L; //compile error, you loose precision in that assigment