为什么Thread类中的“public static final int MAX_PRIORITY”声明为int?

时间:2013-12-26 09:25:30

标签: java multithreading static int members

我怀疑为什么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 这背后的具体原因是什么?有人可以向我解释一下吗?

4 个答案:

答案 0 :(得分:4)

字节使用的空间略小,但使用的速度并不比整数快 - 因为从根本上说,所有32位处理器都可以在整数中工作。

除非你存储一个数组或类似的数组,然后将它们打包到一个较小的空间中,否则没有真正的理由使用字节超过整数。

答案 1 :(得分:0)

因此,如果将来需要引入另一个不在一个字节范围内的值,那么实现者就不会发现自己被先前的,不恰当的决定所束缚,例如你看来赞成的那个。

答案 2 :(得分:0)

我的猜测是它是项目中的代码约定,因为在这种情况下由于内存对齐使得它在x64架构上节省了8个字节。这背后的基本原理可能是在将来的版本中,该字段可用于存储其他线程状态信息。

答案 3 :(得分:-1)

在幕后,java int(在大多数情况下)与byte(和短型)具有相同的大小,因此它并不重要。

byte在使用它时是合乎逻辑的(当数据本身以字节表示时,如原始数据),或者当你有一个小数组时节省空间。

int是开发人员使用的默认类型,除非他们有充分的理由使用其他内容。