Java char类型增量

时间:2018-03-23 13:21:19

标签: java char increment

引用Think Java书:

  

“通常在Java中,语句x ++完全等同于x = x + 1。   但如果x是一个char,它就不完全相同了!在那种情况下,x ++是   合法,但x = x + 1会导致错误。“

任何人都可以解释一下,并举个例子吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

Binary Numeric Promotion将在binary + operator的操作数上执行:

  

如果任一操作数的类型为double,则另一个操作数转换为double。

     

否则,如果任一操作数的类型为float,则转换另一个操作数   漂浮。

     

否则,如果任一操作数的类型为long,则转换另一个操作数   很久。

     

否则,两个操作数都将转换为int类型。

因此,x + 1的结果是int占用32位,而char占用16位。从intchar的演员表可能会失去准确性,您必须明确地这样做:

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?