这段代码为什么报空指针

 public class Test3 {

    public static void main(String[] args) {

       Integer[] c = new Integer[]{null,1,null};

       for(int k=0;k<c.length;k++){
         if(c[k].equals(1)){
           System.out.println("everything will be ok");
       }else{
           System.out.println("something will be wrong");
       }
      }


    }   
}

不能对null调用equals

equals是用来判断字符串的!而你的1是integer!

很容易理解啊,你的数组里面有两个null元素,然后遍历过程中,你先判断下非空。再用equals,修正如下:

  public static void main(String[] args) {

       Integer[] c = new Integer[]{null,1,null};

       for(int k=0;k<c.length;k++){
               if(c[k]==null){
                      System.out.println("something will be wrong");
                }else  if(c[k].equals(1)){
           System.out.println("everything will be ok");
       }else{
          System.out.println("something will be wrong");
       }
      }

为啥要用equals
不过这里不是equals的问题,而是数组有空值的问题,如果容器有空值,遍历全部元素时,就要加上if(a[i]==null)或if(a[i]!=null),把null值排除掉区分掉

     public static void main(String[] args) {

               Integer[] c = new Integer[]{null,1,null};

               for(int k=0;k<c.length;k++){
                 if(c[k]!=null){
                   System.out.println("everything will be ok");
               }else{
                   System.out.println("something will be wrong");
               }
              }


            }  

再加一个if 对空值进行判断