这是一个概念性问题,是我最近得到答案的一个问题 (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/