java - 这两种编写数组的方式有什么重要区别吗?

标签 java arrays

这是一个概念性问题,是我最近得到答案的一个问题 (here) 的后续问题。 我将使用一个java示例来演示我的问题,但我认为这应该适用于其他类似的语言(我不能肯定地说 - 希望有人可以证实这一点或否则说)。基本上我想知道以下可能用途之间是否存在任何细微差别(考虑到它们的初始化方式):

double[] array1D = new double[max]

double[][] array2D = new double [max][1]

假设我们将第二个数组初始化为只有一列,那么一维数组真的有必要存在吗?它是否具有二维阵列所不具备的品质,或者它只是为了迷惑像我这样的可怜的灵魂?此外,我想知道只有一列的 array2D 是否可以做 array1D 不能做的事情?

最佳答案

array1D 和 array2D 之间的主要区别在于,后者的行(或列,无论您想如何查看)都是可以独立于整个数组使用的单独对象。

例如,您可以将整行传递给函数,并且允许该函数修改该行。要使用一维数组实现相同的效果,您必须传递原始数组、数组中行的起始索引以及行的长度。

对对象的每个引用都会花费 4 个字节,因此每个元素的内存使用量会增加 4 个字节,因此使用 2D 数组来做 1D 数组可以做的事情是浪费内存。

关于java - 这两种编写数组的方式有什么重要区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890085/

相关文章:

Java 安卓 : appending a newline using TextView

java - 如何在从mongodb聚合查询的java对象中保存数据

c++ - 为什么 C++ 函数可以创建可变长度的数组?

java - 为什么方法 'Arrays.asList()' 不接受类型为 {"",""} 的参数,但接受 ("","")?

java - Jpype: "Can' t 启动 AWT,因为 Java 是在第一个线程上启动的。”

java - Java中的单引号和双引号有区别吗?

python - 在 Python 中从网络流创建数组

显示所有值的 Javascript 数组

c - 如何声明固定大小元素的二维数组指针

java - JAVA 编译器是否处理函数作用域内的新实例化?