【问题标题】:In java why prefix increment or decrement operator does not require cast in case of byte在java中为什么前缀增量或减量运算符不需要在字节的情况下进行转换
【发布时间】:2015-04-07 08:55:41
【问题描述】:

在java中假设我有以下代码sn-p

byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast

【问题讨论】:

    标签: java operators integer-promotion


    【解决方案1】:

    ++ 的 JLS 规范说:

    前缀自增表达式的类型就是变量的类型。

    .... 在加法之前,对值 1 和变量的值执行二进制数字提升(第 5.6.2 节)。 如有必要,总和会通过缩小原语转换 (§5.1.3) 缩小和/或在存储变量之前进行装箱转换 (§5.1.7) 到变量的类型。前缀递减表达式的值是新值存储后变量的值。

    (术语“缩小原始转换”是指类型转换......)

    参考:JLS 15.15.1

    因此++bbyte,不需要显式转换。

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 2011-03-12
      • 2011-07-21
      • 2014-04-30
      • 2020-06-26
      相关资源
      最近更新 更多