我对为什么 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。所以我认为字节足够 int 范围高于字节。
这背后有什么具体原因吗?有人可以向我解释一下吗?
我对为什么 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。所以我认为字节足够 int 范围高于字节。
这背后有什么具体原因吗?有人可以向我解释一下吗?
字节使用的存储空间略少,但使用起来并不比整数快——因为基本上所有 32 位处理器都以整数工作。
没有真正的理由使用字节而不是整数,除非您存储一个数组或类似的数组,然后可以将它们打包到更小的空间中。
因此,如果将来希望引入另一个不在字节范围内的值,则实现者不会发现自己受到先前的不适当决定(例如您似乎喜欢的决定)的束缚。
我的猜测是这是项目中的代码约定,因为在这种情况下,由于内存对齐,使其字节将在 x64 架构上节省 8 个字节。这背后的基本原理可能是,在未来的版本中,该字段可用于存储其他线程状态信息。
在幕后,java int
(在大多数情况下)具有与 a(和短类型)相同的大小byte
,所以这并不重要。
byte
当使用它是合乎逻辑的时使用它(当数据本身以字节表示时,如原始数据),或者当你有一个小数字数组时为了节省空间。
int
是开发人员使用的默认类型,除非他们有充分的理由使用其他东西。