拳击在一个角色的一元操作之后

时间:2017-03-06 18:52:19

标签: java type-conversion character boxing unboxing

  public static void main(String[] args) {
    Character x = ' ';
    while (x++ < 50) {
        int p = x;
    }
    System.out.println(x instanceof Character);
  }

因为这是一个一元的操作++。 x被取消装入char,然后在执行操作之前扩展为int。 当我退出循环时,我得到'真'。 我无法理解如何将int装入Character Back; java可以允许将int装入Integer或装箱,并将int扩展为Number,Object等。

1 个答案:

答案 0 :(得分:2)

答案在于Java语言规范§15.14.2 Postfix Increment Operator ++

(我强调)

  

在运行时,如果操作数表达式的评估完成   突然,后缀增量表达式突然完成   同样的原因,没有增加。否则,值为1   被添加到变量的值中,并将总和存回   变量。在添加之前,二进制数字促销(§5.6.2)   在值1和变量的值上执行。 如果   必要时,通过缩小的原始转换来缩小总和   (§5.1.3)和/或受到拳击转换(§5.1.7)的类型   存储之前的变量。后缀增量的值   expression是新值之前变量的值   存储