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 对空值进行判断