简单的短期加法产生警告

时间:2015-04-11 13:56:37

标签: java eclipse lint

我发现了一些关于short算术的问题,但没有一个比较以下三个案例。我想知道为什么这两段代码都没问题

(a)中

            short m = 1;
            m += m;

(b)中

            short m = 1;
            m += m + m;

虽然这个

(c)中

            short m = 1;
            m = m + m;

导致错误“类型不匹配:无法从int转换为短”

1 个答案:

答案 0 :(得分:4)

这不是警告 - 这是一个错误。

这里有两个事实:

  • 没有short + short运营商; “最小”添加为int + int,结果类型为int,如有必要,操作数会自动提升为int(请参阅JLS 15.18.2
  • 复合赋值运算符始终具有隐式强制转换(请参阅JLS 15.26.2

第二点是前两个操作的原因。你有效地得到了:

m = (short) (m + m);

m = (short) (m + m + m);

第一点是上次操作无效的原因 - m + m的类型为int,您无法为int分配short值变量。 (你需要演员......)