Java 整数数组还是单个整数?
假设我想要一个4整数的数组 前 这个数组会比将它们声明为单个Int占用更多内存吗 前Java 整数数组还是单个整数?,java,arrays,memory,memory-management,int,Java,Arrays,Memory,Memory Management,Int,假设我想要一个4整数的数组 前 这个数组会比将它们声明为单个Int占用更多内存吗 前 每个int都是一个基本数据类型,其大小在中定义 数组是一个对象,它会带来一些开销。关于如何在中查找Java对象的大小,有一个很好的讨论。节省空间不应该是影响您的决策的首要考虑因素。你应该想到这些问题的答案: 未来ints的数量会发生变化吗-如果答案是“是”,那么您需要一个数组 您需要整数的“可寻址性”吗?-换句话说,如果给您一个索引,比如说,3,您需要访问i3?如果答案是“是”,那么您肯定需要一个数组 为了
每个int都是一个基本数据类型,其大小在中定义
数组是一个对象,它会带来一些开销。关于如何在中查找Java对象的大小,有一个很好的讨论。节省空间不应该是影响您的决策的首要考虑因素。你应该想到这些问题的答案:
- 未来
s的数量会发生变化吗-如果答案是“是”,那么您需要一个数组int
- 您需要整数的“可寻址性”吗?-换句话说,如果给您一个索引,比如说,
,您需要访问3
?如果答案是“是”,那么您肯定需要一个数组i3
为了回答您的问题,一个数组需要额外占用几个字节的内存,因为Java需要为数组对象本身分配空间。当
int
s的数量很小时,这种开销很明显,但随着数组的增长,这种开销会迅速下降。单个int占用的内存会减少
这些变量声明在哪里?本地还是实例/类?这是一个毫无意义的问题。如果你需要一个数组,你就需要一个数组……你在乎堆内存还是堆栈吗?@user3180189,请用一个伪类更新你的代码,这样问题的这一方面就变得清晰了。据我所知,Java没有指定原语使用多少内存。即使它们只需要2个或更少的字节,它们也可能存储在至少4个字节中。您是否单击了上面指向Oracle站点的链接?这些是您在程序中看到的大小。这不一定是JVM分配用来存储它们的大小。32位/64位对齐内存的访问速度比使用奇数字节的速度要快-/类似的事情:你在做毫无根据的假设。从您发布的链接中可以看到:“此外,内存使用量通常被填充为8字节的倍数(在64位机器上)。”
int[] iA = {32,33,34,35};
int i0 = 32;
int i1 = 33;
int i2 = 34;
int i3 = 35;