请问:int [][] xx=new int[3][];
      int [][] xx=new int[3][0];
二者有何区别?
编译都不报错!
但是运行时第1个报错?

解决方案 »

  1.   

    第一个只分配了一维
    for(int i=0; i<3; i++){
    xx[i]=new int[3];//3*3
    }
      

  2.   

    第一个数组第二维引用为null,用的时候当然会出错了
      

  3.   

    believefym(feng) , n5(没啥说的,就喜欢编程!) :第一个确实只分配了一维,但是第二个的第二维为什么添上0就不报错了,难道就不是NULL了吗?
    0也应该是空吧?
      

  4.   

    它的区别类似null于“”的区别;
    int [][] xx=new int[3][];的第二维没有被定义,是无法拿到它的高度。
    而int [][] xx=new int[3][0];的第二维被定义了,高度为0,
      

  5.   

    对于一个二维数组,当数组的第二维是null时,实际上是一个一维数组,但是javac编译时不会报错,但是在运行时会throw一个异常,catch一下就可以了。