Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 整数数组还是单个整数?_Java_Arrays_Memory_Memory Management_Int - Fatal编程技术网

Java 整数数组还是单个整数?

Java 整数数组还是单个整数?,java,arrays,memory,memory-management,int,Java,Arrays,Memory,Memory Management,Int,假设我想要一个4整数的数组 前 这个数组会比将它们声明为单个Int占用更多内存吗 前 每个int都是一个基本数据类型,其大小在中定义 数组是一个对象,它会带来一些开销。关于如何在中查找Java对象的大小,有一个很好的讨论。节省空间不应该是影响您的决策的首要考虑因素。你应该想到这些问题的答案: 未来ints的数量会发生变化吗-如果答案是“是”,那么您需要一个数组 您需要整数的“可寻址性”吗?-换句话说,如果给您一个索引,比如说,3,您需要访问i3?如果答案是“是”,那么您肯定需要一个数组 为了

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

这个数组会比将它们声明为单个Int占用更多内存吗


每个int都是一个基本数据类型,其大小在中定义


数组是一个对象,它会带来一些开销。关于如何在中查找Java对象的大小,有一个很好的讨论。

节省空间不应该是影响您的决策的首要考虑因素。你应该想到这些问题的答案:

  • 未来
    int
    s的数量会发生变化吗
    -如果答案是“是”,那么您需要一个数组
  • 您需要整数的“可寻址性”吗?-换句话说,如果给您一个索引,比如说,
    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;