Java 15中为何这段代码会抛出NullPointerException?
空指针异常原因解析
- 第一行代码
Boolean visitedAlphabet[] = new Boolean[26];创建的是包装类型Boolean的数组,而非基本类型boolean的数组。Java中引用类型数组初始化后,所有元素的默认值是null,不是基本类型boolean默认的false。 - 第二行代码里的
Arrays.stream(visitedAlphabet).anyMatch(e -> e != true),当执行e != true这个比较操作时,Java会对Boolean包装类的变量e进行自动拆箱——也就是调用e.booleanValue()方法,把包装类型转换为基本类型boolean来完成比较。但数组里的每个e都是null,调用null对象的方法必然触发NullPointerException,也就是你看到的报错内容。
内容的提问来源于stack exchange,提问作者M. Lee
相关产品推荐
相关产品推荐

