可能会出现空指针异常的情况大概有这几种
1.包装类型自动拆箱的时候出现空指针异常
public void test3(){
// 自动装箱
int a=1;
Integer b=a;
System.out.println(b);
Integer c=null;
// 自动拆箱时如果c为null就会出现空指针异常
a=c;
}
2.字符串比较出现空指针异常
String s=null;
// 输出false
System.out.println("".equals(s));
// java.lang.NullPointerException
s.equals("xxx");
3.A对象包含了B字段,通过A获取到了B之后没有判空直接用B进行调用
Book book=new Book();
// book.setName("laity");
// 级联调用
//book.getName().substring(0,3);
String name = book.getName();
// 此时输出的name为null
System.out.println(name);
// 此时再用name调用任何方法时都会出现空指针异常
name.substring(0, name.length()-1);
4.类似ConcurrentHashMap这样键值都不支持为null的容器,强行put null
// 一般情况下hashmap健值都允许为空,treemap健不能为空,值可以为空
ConcurrentHashMap<String, String> concurrentHashMap=new ConcurrentHashMap();
String a=null;
concurrentHashMap.put(a,"哈啊哈准备迎接NullPointerException");
5.方法或远程服务返回的 List 不是空而是 null,没有进行判空就直接调用 List 的方法出现空指针异常。
List<String> list=null;
for(String s:list){
System.out.println(s+“哈啊哈准备迎接NullPointerException”);
}