这是多维数组中内存空间的冗余分配吗?

Thi*_*ark 9 java multidimensional-array

在Wikipedia上的Matrix Chain Multiplication页面中,有一段Java代码片段:

public void matrixChainOrder(int[] p) {
    int n = p.length - 1;
    m = new int[n][n];
    s = new int[n][n];
    for (int i = 0; i < n; i++) {
        m[i] = new int[n];
        m[i][i] = 0;
        s[i] = new int[n];
    }
    ...
Run Code Online (Sandbox Code Playgroud)

还没有在它的两个维度中m = new int[n][n];分配大小的内存空间,n所以循环中的这一步m[i] = new int[n];实际上是多余的,因为它所做的只是再次重新分配第二个维度?

And*_*niy 10

是的.

m[i] = new int[n];绝对是多余的.似乎这条线是来自c风格的psedocode的传承,这种启动是无关紧要的.

  • 不仅如此,整个循环也是如此.Java将`int []`初始化为零. (6认同)