引用Think Java书:
“通常在Java中,语句x ++完全等同于x = x + 1。 但如果x是一个char,它就不完全相同了!在那种情况下,x ++是 合法,但x = x + 1会导致错误。“
任何人都可以解释一下,并举个例子吗?提前谢谢!
答案 0 :(得分:1)
Binary Numeric Promotion将在binary + operator的操作数上执行:
如果任一操作数的类型为double,则另一个操作数转换为double。
否则,如果任一操作数的类型为float,则转换另一个操作数 漂浮。
否则,如果任一操作数的类型为long,则转换另一个操作数 很久。
否则,两个操作数都将转换为int类型。
因此,x + 1
的结果是int
占用32位,而char
占用16位。从int
到char
的演员表可能会失去准确性,您必须明确地这样做:
char x = 1;
x = (char)(x+1);
答案 1 :(得分:0)
简短回答: (在Java中)对数据类型短于整数(byte,short和char)的加法(+)的任何参数都将转换为整数。 考虑x = x + 1:第一个x被转换为int,然后添加1(也是一个int),int + int的结果显然也是int。然后编译器抛出一个错误,因为他必须将一个4字节的整数分配给一个2字节的字符 - 这是他无法做到的。要解决此问题,您可以手动将返回的int转换为char:x =(char)(x + 1)
详细答案: In Java, is the result of the addition of two chars an int or a char?