整数数组或单个整数?

时间:2014-01-28 02:57:03

标签: java arrays memory memory-management int

假设我想要一个4 int的数组

离。

int[] iA = {32,33,34,35};

这个数组会占用更多内存而不是将它们声明为单独的Int吗?

离。

int i0 = 32;
int i1 = 33;
int i2 = 34;
int i3 = 35;

3 个答案:

答案 0 :(得分:2)

每个int都是原始数据类型,其大小在http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html中定义。

数组是一个对象,带来一些开销。关于如何在how calculate java array memory usage中找到Java对象的大小,有一个很好的讨论。

答案 1 :(得分:2)

节省空间不应该是影响您决定的第一个问题。你应该想到这些问题的答案:

  • int的数量可能会在未来发生变化 - 如果答案为“是”,那么您需要一个数组。
  • 你的整数是否需要“可寻址性”? - 换句话说,如果给你一个索引,比如3,你是否需要能够访问{{} 1}?如果答案是“是”,那么你肯定需要一个数组。

要回答你的问题,数组会占用一些额外的内存字节,因为Java需要为数组对象本身分配空间。当i3的数量很小时,这种开销很明显,但随着阵列的增长,它很快就会下降。

答案 2 :(得分:1)

单个int将占用更少的内存,因为有

  1. 涉及的阵列参考较少。
  2. 没有涉及对象填充
  3. http://algs4.cs.princeton.edu/14analysis/