class shuzhu1
{
      public static  void main(String args[])
         {     
                 int num2[][];
                 num2=new int [3][];
                 num2[0]=new int[5]; 
                 num2[0][4]=2;
                 System.out.println(num2[0][4]);
                 System.out.println(num2[0][3]);
                 System.out.println(num2[0][7]);
}
}
输出结果是
E:\>java shuzhu1
2
0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
        at shuzhu1.main(shuzhu1.java:11)
、、、
同时我想问一下我没设置的数组输出值为什么为空
超过数组边界的数组值输出是什么意识
我感刚刚开始学大家见谅!!问题简单!!!

解决方案 »

  1.   

    程序只对num2[0]进行了内存分配,也就是new int[5],分配这个内存的时候,编译器会自动把内存清零,所以num2[0][0]到num2[0][4]初值都为0
    num2[1] num2[2]都没有分配内存,所以都是指向null
    而num2[0][7]越界了,因为num2[0]=new int[5],只分配了5个int的内存(0到4),因此系统抛数组越界异常了.
      

  2.   

    System.out.println(num2[0][7]);num2[0]=new int[5]; 你认为7<5???
      

  3.   

    ls...
    麻烦做广告的时候能不能专业一点啊,不要直接ctrl+cv好不好?如果上面这个问题“开始的时候我也找不到问题的原因”,还需要去技术交流群,不是说明兄弟你水平太次就是说明这个群太烂……一个水平太次的人推荐的群……最讨厌你们这帮做广告的,一点技术含量都没有。
      

  4.   

    new int时会设默认值为0,所以num2[0][3]==0num2[0]=new int[5]; 
    将num2[0]的长度设为5,所以只会有num2[0][0],num2[0][1],num2[0][2],num2[0][3],num2[0][4],
    7〉4,所以num2[0][7] 超出数组的大小
      

  5.   

     num2[0]=new int[5]; 这是你定义的语句这个二维数组的第一行被你定义为长度为5了你在后面去访问该行第8个元素,肯定要出异常了。
      

  6.   

    哦,没看你的问题。1 没设置的数组输出值为什么为空 没设置就是没有分配内存,所以为空。2 超过数组边界的数组值输出是什么意识 你也看到了,是抛出异常。这点和C++不一样,C++和C不会去检查数组下标是否越界Java会进行检查,并当数据下标越界的时候抛出数组下标越界异常ArrayIndexOutOfBoundsExceptionException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 
            at shuzhu1.main(shuzhu1.java:11) 这个信息的意思就是,在main的这个线程里出现了java.lang.ArrayIndexOutOfBoundsException(数组下边越界异常)位置是在你的这个shuzhu1.java文件中的第11行