黑马程序员技术交流社区

标题: 关于数组默认值的问题 [打印本页]

作者: 会飞De石头    时间: 2014-6-18 09:57
标题: 关于数组默认值的问题
本帖最后由 会飞De石头 于 2014-6-19 10:31 编辑

        public void meth1() {
                int[][] arr = new int[3][];
                arr[0] = new int[3];
                //arr[1] = new int[1];

                System.out.println(arr);
                System.out.println(arr[0]);
                System.out.println(arr[1]);
                //System.out.println(arr[1][0]);
        }
        
        public void meth2(){
                int[][] arr = new int[3][4];
               
                System.out.println(arr);
                System.out.println(arr[0]);
                System.out.println(arr[1]);
                System.out.println(arr[1][0]);
        }
定义了两个方法,其中meth1没有对二维数组中的一维数组进行定义,结果在打印arr[1]结果不再相同;
meth1中为null;meth2中为地址值,想问一下是怎么回事?或者内存分布有什么不同吗?
作者: 喜爱    时间: 2014-6-18 10:34
数组是对象,对于第一个方法meth1中,你只是将二维数组arr[0]赋值为一维数组new int[3],而没有将arr[1]赋值,其值就为null,而meth2方法中,在声明arr数组的时候,就已经将一维数组arr[1]赋值,其值为new int[4]。所以一个为null,一个为地址值。
作者: 小小菜鸟101    时间: 2014-6-18 11:01
二位数组的行是由列组成的,没有列,不能给行的开空间,也就没有地址了
作者: 唐坚    时间: 2014-6-18 13:28
              哦啦
作者: gyw520gyw    时间: 2014-6-18 22:29
沙发正解
作者: 亮~    时间: 2014-6-18 23:55
java 中 和c 语言  有点区别  c语言中  不允许出现[]array;
作者: ╭月牙湾湾╮    时间: 2014-6-19 00:03
学习           
作者: 杨桦    时间: 2014-6-19 00:06
      学习
作者: 会飞De石头    时间: 2014-6-19 10:31
喜爱 发表于 2014-6-18 10:34
数组是对象,对于第一个方法meth1中,你只是将二维数组arr[0]赋值为一维数组new int[3],而没有将arr[1]赋 ...

谢谢 表示理解了点




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2