我怀疑为什么java开发人员声明为
public static final int MAX_PRIORITY
public static final int MIN_PRIORITY
public static final int NORMAL_PRIORITY
而不是声明public static final byte MAX_PRIORITY
。因为对于这些变量,最高值仅为10。所以我认为byte足够int范围高于byte
这背后的具体原因是什么?有人可以向我解释一下吗?
答案 0 :(得分:4)
字节使用的空间略小,但使用的速度并不比整数快 - 因为从根本上说,所有32位处理器都可以在整数中工作。
除非你存储一个数组或类似的数组,然后将它们打包到一个较小的空间中,否则没有真正的理由使用字节超过整数。
答案 1 :(得分:0)
因此,如果将来需要引入另一个不在一个字节范围内的值,那么实现者就不会发现自己被先前的,不恰当的决定所束缚,例如你看来赞成的那个。
答案 2 :(得分:0)
我的猜测是它是项目中的代码约定,因为在这种情况下由于内存对齐使得它在x64架构上节省了8个字节。这背后的基本原理可能是在将来的版本中,该字段可用于存储其他线程状态信息。
答案 3 :(得分:-1)
在幕后,java int
(在大多数情况下)与byte
(和短型)具有相同的大小,因此它并不重要。
byte
在使用它时是合乎逻辑的(当数据本身以字节表示时,如原始数据),或者当你有一个小数组时节省空间。
int
是开发人员使用的默认类型,除非他们有充分的理由使用其他内容。