为什么创建空白矩阵 return null 而不是 0.0?

Why does creating a blank matrix return null instead of 0.0?

我有一个 Java 方法 fill0s() 将一个较小的矩阵输入一个较大的矩阵,假设用 0 填充:

public class PoolingFunctions {

    // Fill needed spaces with 0
    public static Double[][] fill0s(Double[][] image, int filter_size){
        int columns_remaining = filter_size - (image[0].length%filter_size);
        int rows_remaining = filter_size - (image.length%filter_size);
        // CREATE A MATRIX: HERE LIES THE PROBLEM: //////////////////////////////
        Double [][] blank_matrix = new Double [(image.length)+columns_remaining][(image[0].length)+rows_remaining];
            for (int i = 0; i<image.length; i++) {
                for (int j = 0; j<image[i].length; j++) {
                    blank_matrix[i][j] = image[i][j];
                }
            }

        return blank_matrix;
    }
}

调用此方法后:

public class MainPooling{
    public static void main(String[] args) {
        Double[][] image =  {   {1.0,1.0,1.0,1.0},
                                {1.0,1.0,1.0,1.0},
                                {1.0,1.0,1.0,1.0},
                                {1.0,1.0,1.0,1.0}
                            };

        Double[][] formatted_image;
        formatted_image = PoolingFunctions.fill0s(image,3);
        TestMatricesJava.print2dMatrix(formatted_image);
    }
}

我得到以下结果:

1.0 1.0 1.0 1.0 null null 
1.0 1.0 1.0 1.0 null null 
1.0 1.0 1.0 1.0 null null 
1.0 1.0 1.0 1.0 null null 
null null null null null null 
null null null null null null 

我的问题是:为什么函数 return 是 null 而不是 0.0?

因为 Double 是 class,所以 Double 数组的默认值是 null,而不是 0.0。

您需要使用原始类型 double 或显式初始化矩阵。

Double 是一个包装器 class,如果未初始化,其值为 null。使用原始类型 double,它会给你一个正确的结果。