Java 为什么';变量只能在此位置为null';?

Java 为什么';变量只能在此位置为null';?,java,null,Java,Null,我有这个: String data[][] = null; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { data[i][j]= "test"; } } 字符串数据[][]=null; 对于(int i=0;i

我有这个:

    String data[][] = null;
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            data[i][j]= "test";
        }
    }
字符串数据[][]=null;
对于(int i=0;i<10;i++){
对于(int j=0;j<10;j++){
数据[i][j]=“测试”;
}
}

但它不起作用。变量数据为空。

因为必须先初始化数组。把数组看作C/C++中的一个“指针”。您必须编写类似于
stringdata[][]=newstring[10][10]的内容

您的第一行应该是

 String data[][] = new String[10][10]; 

java中的数组是一种对象,必须使用
new
进行分配

替换

 String data[][] = null;


当然,数据是空的,你明确地说了。如果你这么想

String data[][] = null;
如果初始化一个二维数组,并且每个值都为null,那么您就错了

例如,您需要的是:

String data[][] = new String[10][10]
这初始化了一个包含100个元素的二维数组,也就是说:一个包含10个元素的数组,每个元素都是一个包含10个元素的数组


Java中的数组是一个对象,就像任何其他对象一样,因此必须用新的数组初始化<代码>数据
在您的示例中是对一个数组的引用,该数组本身包含对其他数组(=对象)的引用。

这是因为您为它指定了null。您需要创建一个数组并将其分配给数据。请尝试以下方法:

String data[][] = new String[10][10]; 

数组将值指定为引用类型。若要分配其中的任何值,必须首先创建它的实例,否则它将给出错误。因此,您必须编写以下内容:

 String data[][] = new String[10][10];
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            data[i][j]= "test";
        }
    }
字符串数据[][]=新字符串[10][10];
对于(int i=0;i<10;i++){
对于(int j=0;j<10;j++){
数据[i][j]=“测试”;
}
}

字符串数据[][]
只是一个可以保存二维字符串数组的引用。因为您没有向引用添加任何对象,所以它指向null

我也是

String data[][] = new String[10][10];

将对象添加到引用中。

您没有初始化数组。您可以根据需要定义数组大小,如给定的示例所示

2d数组类似于表的行和列,必须先初始化行大小,然后初始化列大小

下面是初始化的示例

data[][] = new String[5][]; // after this you need to define for 2d array like this
data[0] = new String[2];  
data[1] = new String[3];
data[2] = new String[1];
如上所述,列是动态的,您可以根据需要定义列大小 另一个是

data[][] = new String[5][3] then each row has 3 column
data[][] = new String[5][3] then each row has 3 column