【问题标题】:2 dimentional array initialisation and usage二维数组初始化和使用
【发布时间】:2012-04-12 19:10:48
【问题描述】:

我正在编写一个使用大量矩阵计算的 java 程序,在某些计算过程中,我在进一步计算之前使用多个临时“存储”矩阵。

我已经在类变量中声明了临时矩阵

private double[][] intermediateMatrixA; private double[][] intermediateMatrixB; private double[][] intermediateMatrixC; private double[][] intermediateMatrixD;

但是,我从来没有以intermediateMatrix = new double[][] 的形式初始化构造函数或方法中的矩阵。 相反,我正在为每个临时矩阵 intermediateMatrix = [the product of a matrix calculation]

我的问题:考虑到临时数组将在其他计算中重用,我使用的方法是否安全?每次我声明我的一个临时矩阵应该等于另一个数组时,它将等于该矩阵的确切维度和值?

提前致谢 问候 迈克

【问题讨论】:

  • 我不清楚这是如何工作的——如果你能发布更多代码,我会更确定。但这就是我要告诉你的:你不能从无到有。如果要乘矩阵,则需要在某处创建一个新的 double[][] 来存储新值。
  • 我强烈建议你去谷歌搜索 JAMA 矩阵包 - 矩阵数学已经够难了,因为它不需要编写自己的库。

标签: java arrays matrix initialization declaration


【解决方案1】:

是的,它是“安全的”,因为您的变量从上面指向您的方法或计算的结果,并且行和列将被保留。

private double[][] intermediateMatrixA = new double[3][4];
//etc etc
intermediateMatrixA =new double[5][6];

完全没问题,只要它始终是double[][];不过,跟踪行和列的逻辑取决于您。

您可以将double[][] 的类型分配给其他类型的double[][],但不能将double[] 分配给double[][]

如果您打算一次又一次地使用它们,我建议您在分配它们之前将它们设置为 null,以防万一。

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多