定义数组  不是  :  数组类型 []数组名称=new 数组类型[数组大小],类也是一种数据类型不是么,
这里的Student是一个类,我想定义一个类数组
 Student[]shazi = new Student[5];
然后如果直接这样就会报错,我已经new了为什么它还要报错说空指针指向错误
for(int x=0;x<names.length;x++)
        {
         shazi[x].name=names[x];
         //System.out.println(shazi[x].name);
        
        }
难道是因为,类数组里是一个个相同属性的类,类定义就需要new,所以才要new两次么,求告知!!!!!

解决方案 »

  1.   

    原来这个叫对象数组,,,,,,,,,,,,,,因为对象数组中每个元素都是对象,所以每个元素都需要单独实例化,对象数组需要new两遍,第一次new对象数组长度,第二遍new对象数组中的每个元素。(教科书上原话)
      

  2.   

    这个就是数组没有初期化,你是定义了,但是里面都是null,你必须手动的进行初期化
      

  3.   

    喔,谢谢,,,,,,,,,,,,,,,,它初期化new了以后,里面不应该还是null么,,,,,,
      

  4.   

    你所说的只是初始化了一个对象数组声明和初始化对象数组 Student[] students = new Student[5];此时定义了一个长度为5的Student数组,但数组是空的,还未被填充。
    填充数组元素for(int x=0;x<students.length;x++) {
        students[x]=new Student();
         ///
    }
      

  5.   

    新手回答,
    只要数组类型不是基本类型如int,数组类型为其他引用类型时,就需要先定义数组长度再填充值。
      

  6.   

    喔,谢谢,又get一个东西