import java.util.Arrays;
class ArrayTest{
public static void main(String[] args){ /*Students[] ss=new Students[]{
new Students("ahangsan",18),
    new Students("bisi",11),
new Students("cangwu",8),
new Students("aaa",8)};*/

Students[] ss=new Students[4];
new Students("ahangsan",18);
    new Students("bisi",11);
new Students("cangwu",8);
new Students("aaa",8);
  
Arrays.sort(ss);
int index=Arrays.binarySearch(ss,ss[2]);
System.out.println("index="+index);
System.out.println(ss[index]);

}
创建数组后直接符值就没问题,可以从这个对象数组中取出想要的元素,为什么声明这个对象数组有4个元素,并分别创建后就是NULLPOINTEREXCEPTION呢???
谢谢是我binarySearch方法比较对象用法用的不对???

解决方案 »

  1.   

    Students[] ss=new Students[4]; 创建了一个Students数组,长度是4,但是没有数值。
    new Students("ahangsan",18);//这里不是给上面的数组赋值,只是临时创建了一个对象。
    new Students("bisi",11);/////不是赋值,只是临时对象。
    new Students("cangwu",8);
    new Students("aaa",8);你如果想赋值,应该这样写:
    ss[0] =new Students("ahangsan",18);
    ss[1] =new ……
    ss[2] =new ……
    ……或者使用循环赋值。
      

  2.   

    new Students("ahangsan",18);
    new Students("bisi",11);
    new Students("cangwu",8);
    new Students("aaa",8);你的这四个对象根本就没有放到数组中啊!你应该把他们分别赋值给ss[0],ss[1],ss[2],ss[3]
    然后在Arrays.sort(ss);