黑马程序员技术交流社区
标题:
关于二维数组的疑问[已解决]
[打印本页]
作者:
于启会
时间:
2012-8-29 14:05
标题:
关于二维数组的疑问[已解决]
本帖最后由 于启会 于 2012-8-29 19:40 编辑
public class test3{
public static void main(String arg[]){
int array[][]=new int [5][];
System.out.println(array[1]);//输出结果为null
System.out.println(array[1][0]);//这条语句则报错
}
}
复制代码
为什么声明二维数组时int array[][] = new int [5][];后面的数组中没有写数组长度编译却能通过?
array[1]能够打印出结果为null?而打印array[1][0]的时候程序报错呢?
作者:
黑马杨晨
时间:
2012-8-29 14:09
在我印象中好像int array[][] = new int[5][],如果不填数,默认为零也就是说:默认为array[][] = new int[5][0];
array[1][0]角标越界了!
作者:
廉伟
时间:
2012-8-29 14:15
为什么声明二维数组时int array[][] = new int [5][];后面的数组中没有写数组长度编译却能通过?
因为二维数组在编译的时候,主动给二维数组加上了初始化值,所以可以通过。
array[1]能够打印出结果为null?而打印array[1][0]的时候程序报错呢?
因为你在打印arr[1]是,你的二维数组没有定义初始化值,他的自己的初始化值是null。而当你去打印array[1][0]是,你的二维数组的最大长度是null他没有长度,0角标位越位了。所以你要打印第一个数组的0角标位的值是不存在的,他要报错。
作者:
王自强
时间:
2012-8-29 15:37
int arr[][] = new int[5][];
for(int[] s : arr)
{
System.out.println(s);
}
复制代码
打印五个 null;
说明初始化了5个长度为0 的一维空数组。
array[1][0]);//array[1]没有角标为0的元素,空指针异常
作者:
魏亮
时间:
2012-8-29 15:48
二维数组中的五个数组全部为空,也就是array这个二维数组包含的5个数组里没有元素,所以在打印array[1][0]时,会报错
作者:
郑世光
时间:
2012-8-29 15:55
语句int array[][] = new int [5][];在内存中定义了一个长度是5的二维数组。数组是引用数据类型,初始化是null。
所以array[0]=array[1]=array[2]=array[3]=array[4]=null。
打印array[1][0]时,你想打印下标为1的一维数组array[1]中的第一个元素,而你的数组还是null,怎么可能打印得了呢!
作者:
黑马_许芸
时间:
2012-8-29 16:20
array[1]是一个指向一维数组int[]的引用类型,你没有给它赋值,所以打印出来结果为null。
array[1][0]本身是一个原生数据类型int。一个原生数据类型(byte,short,int,long,char,boolean,float,double),若它是成员变量,不赋值的话,系统会给它赋默认值。
但是你这里是局部变量,系统不会给它默认值。访问它自然就会出现空指针异常。
你看下面我的例子,因为数组int[][] a 是成员变量,所以我打印a[0][0]结果是默认值0.
public class Test
{
public int[][] a = new int[2][2];
public static void main(String[] args)
{
Test test = new Test();
System.out.println(test.a[0][0]);
}
}
复制代码
作者:
孙沛
时间:
2012-8-29 19:31
array[1];//输出结果为null,这是因为array数组的第一维已经初始化了,在内存中分配了5个空间,array[1]自然就不会报错,但是你没有赋值,所以返回null
array[1][0];//这条语句则报错,这是因为array数组的第二维,还没有初始化,内存还没有分配空间,array[1][0]指向的意思是指向二维的第一个空间,但是内存没有分配空间,所以报错
作者:
杨千里
时间:
2012-9-7 19:51
多谢 问题已经解决。。。
这是看毕老师数组最后一个视频,看来看去没看懂,原来没认真看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2