【问题标题】:Incompatible types error Java between short and int. Unsure of cause在 short 和 int 之间不兼容的类型错误 Java。不确定原因
【发布时间】:2012-04-26 19:37:10
【问题描述】:

在下面的代码中我有一个错误 “可能的精度损失 发现:int 要求:短”。 我理解错误的含义,但我只是想知道为什么我会得到它。当然,该函数应该返回一种短类型(我看不出可能有任何精度损失,代码应该返回一个 16 位整数)。谁能帮我解释一下为什么下面的代码似乎需要 int 类型?

static short a() {
    short[] payload = {
            100, 200, 300,
            400, 500, 600,
            700, 800, 900, 1000
    };
    short offset = 2;
    return (payload[offset - 2] << 8 & 0xff00) + (payload[offset - 1] & 0xff);
}

谢谢!

【问题讨论】:

标签: java bit-manipulation precision


【解决方案1】:

short 上的 Java 算术运算总是返回 int,部分是为了防止溢出,部分是为了反映底层 JVM 字节码,它不区分 intshort 或 @ 上的算术运算987654325@。但基本上,(payload[offset - 2] &lt;&lt; 8 &amp; 0xff00) 是一个 int,它希望你把它改成短的。

【讨论】:

  • 我什至忘记了 :) 我以前从未真正使用过短裤。
  • @MarioDeSchaepmeester 它们在夏天非常有用。
  • 什么,蚊子能咬掉我的腿吗? ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2013-08-21
  • 2020-12-05
  • 2016-09-11
相关资源
最近更新 更多