为什么'变量在此位置只能为空'?

时间:2011-12-09 12:04:19

标签: java null

我有这个:

    String data[][] = null;
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            data[i][j]= "test";
        }
    }

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

8 个答案:

答案 0 :(得分:7)

你的第一行应该是

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

答案 1 :(得分:4)

因为你必须先初始化你的数组。将数组视为C / C ++中的“指针”。你必须写String data[][] = new String[10][10];

之类的东西

答案 2 :(得分:3)

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

替换

 String data[][] = null;

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

答案 3 :(得分:3)

当然是数据为空,你明确这么说。如果你认为那样

String data[][] = null;

应该初始化一个二维数组,每个值为null,你错了。

您需要的是例如:

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

这个初始化了一个包含100个元素的二维数组,也就是说:一个包含10个元素的数组,每个元素都是一个包含10个元素的数组。

Java中的数组是一个对象,就像任何其他对象一样,因此必须用new初始化。示例中的data是对数组的引用,该数组本身包含对其他数组(=对象)的引用。

答案 4 :(得分:1)

那是因为你已经为它指定了null。您需要创建一个数组并将其分配给数据。试试这个:

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

答案 5 :(得分:0)

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

 String data[][] = new String[10][10];
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            data[i][j]= "test";
        }
    }

答案 6 :(得分:0)

String data[][]只是一个可以容纳二维字符串数组的引用。由于您尚未向引用添加任何对象,因此它指向null

所以

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

将对象添加到引用中。

答案 7 :(得分:0)

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

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