Java 这段代码为什么会抛出nullpointerexception?

Java 这段代码为什么会抛出nullpointerexception?,java,nullpointerexception,Java,Nullpointerexception,我不明白为什么这段代码抛出空指针异常,因为我认为第3行将sampleArray[0][0])的值设置为1 int arrSize = 100; String[][] sampleArray = new String[arrSize][]; sampleArray[0][0]="1"; System.out.println(sampleArray[0][0]); 有任何帮助吗?sampleArray[0]尚未初始化为数组。 您初始化了数组的第一个维度,但没有初始化第二个维度 您需要执行类似于sa

我不明白为什么这段代码抛出空指针异常,因为我认为第3行将
sampleArray[0][0])
的值设置为
1

int arrSize = 100;
String[][] sampleArray = new String[arrSize][];
sampleArray[0][0]="1";
System.out.println(sampleArray[0][0]);

有任何帮助吗?

sampleArray[0]
尚未初始化为数组。 您初始化了数组的第一个维度,但没有初始化第二个维度

您需要执行类似于
sampleArray[0]=新字符串[size]

初始值设定项
String[][]sampleArray=new String[arrSize][]
有效,因为您正在创建一个引用了其他数组的数组。这些其他阵列中的每一个都可以具有不同的大小,您可以根据需要进行设置。我的意思是,以下内容完全合法:

sampleArray[0]=新字符串[10];
sampleArray[1]=新字符串[5];
System.out.println(sampleArray[0][9]);
System.out.println(sampleArray[1][4]);

采样阵列[0]
尚未初始化为阵列。 您初始化了数组的第一个维度,但没有初始化第二个维度

您需要执行类似于
sampleArray[0]=新字符串[size]

初始值设定项
String[][]sampleArray=new String[arrSize][]
有效,因为您正在创建一个引用了其他数组的数组。这些其他阵列中的每一个都可以具有不同的大小,您可以根据需要进行设置。我的意思是,以下内容完全合法:

sampleArray[0]=新字符串[10];
sampleArray[1]=新字符串[5];
System.out.println(sampleArray[0][9]);
System.out.println(sampleArray[1][4]);

不能仅设置二维数组的第一个维度的大小。因为它是一个数组的数组,所以您不能返回一个未实例化数组的数组。

您不能只设置二维数组的第一维大小。因为它是一个数组数组,所以您无法返回一个未实例化数组的数组。

OK如果我将第2行更改为:String[][]sampleArray=new String[arrSize][10],代码将正常工作;这是否意味着我必须始终设置第一维度和第二维度的大小?但我不明白的是,为什么这仍然是一个有效的初始值设定项:String[][]sampleArray=newstring[100][];它等于String[]sampleArray=新字符串[100]。。当你实例化一个数组时,你必须给出它的大小。如果要向数组中添加不同大小的数组,请尝试使用ArrayList,这样会更干净。如果我将第2行更改为:String[][]sampleArray=new String[arrSize][10],则代码可以工作;这是否意味着我必须始终设置第一维度和第二维度的大小?但我不明白的是,为什么这仍然是一个有效的初始值设定项:String[][]sampleArray=newstring[100][];它等于String[]sampleArray=新字符串[100]。。当你实例化一个数组时,你必须给出它的大小。如果要向数组添加不同大小的数组,请尝试改用ArrayList,这样会更干净。请查看我对mtefi答案的评论。请查看我对mtefi答案的评论。