Java中常见的空指针异常 朴灿烈づ我的快乐病毒、 2023-10-09 15:38 19阅读 0赞 **参考链接:** * [java中什么是空指针异常以及为什么会产生空指针异常天上的云川的博客-CSDN博客什么是java空指针][java_-CSDN_java] * [java中容易产生空指针异常:NullPointerException的场景火龙映天的博客-CSDN博客java怎么制造空指针异常][java_NullPointerException_-CSDN_java] * [java空指针异常是什么、怎么发生、如何处理僵尸道长毛小方的博客-CSDN博客空指针异常是什么][java_-CSDN] ### 1. 名词解释 ### **指针:**指针中存放的是内存地址。 **空:**null **空指针:**指针不指向任何内存地址(没有初始化分配内存,获得引用) **空指针异常:**一个指针不指向任何内存地址,但仍被调用了。 **打开 NullPointerException源码,开头就写明出现NullPointerException的原因:** * Invoking a method from a null object:调用空对象的方法 * obj.method() // obj对象不存在 * Accessing or modifying a null object’s field:获取或修改空对象的字段 * obj.setName("cjn") // obj对象不存在 * Taking the length of null, as if it were an array:获取一个空数组的长度 * array.length // array为null * Accessing or modifying the slots of null object, as if it were an array:获取或者修改空集合的一个位置上的内容 * arr\[100\]=100; // array为null * Throwing null, as if it were a Throwable value:将null视为Throwable值 * When you try to synchronize over a null object:当你尝试同步一个空对象 ### 2. 代码测试 ### **测试代码如下:** package exception; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import compare.User; import java.util.Hashtable; import java.util.List; /** * @ClassName NullPointerExceptionTest * @Description 产生空指针异常的原因:在null对象上调用方法或者获取属性 * @Author Jiangnan Cui * @Date 2023/2/13 21:05 * @Version 1.0 */ public class NullPointerExceptionTest { public static void main(String[] args) { stringNullPointerException(); collectionNullPointerException(); packageClassNullPointerException(); } /** * 测试字符串产生的空指针异常 */ public static void stringNullPointerException(){ System.out.println("测试字符串产生的空指针异常"); String str = null; // 1. 字符串内容为null,调用字符串相关方法时会产生空指针异常 // if(!str.isEmpty()){ // System.out.println("str = " + str); // } // 优化:先判断不为null,满足后再调用其所属方法 if(str != null && !str.isEmpty()){ System.out.println("str = " + str); } // 2. 字符串内容为null,进行字符串内容比较时会产生空指针异常 // if(str.equals("test")){ // System.out.println("str = " + str); // } // 优化: // a. 将不为null的字符串内容放在前方 if("test".equals(str)){ System.out.println("str = " + str); } // 2. 使用StrUtil.equals()方法比较,此时str放在前后均可以 // str放在前面 if(StrUtil.equals(str, "test")){ System.out.println("str = " + str); } // str放在后面 if(StrUtil.equals("test", str)){ System.out.println("str = " + str); } } /** * 测试包装类自动拆箱时产生的空指针异常 */ public static void packageClassNullPointerException(){ Integer integer = null; // int number = integer; // System.out.println("number = " + number); // 优化:先判空,再赋值 int number = 0; if(integer != null){ number = integer; } System.out.println("number = " + number); } /** * 测试集合调用时产生的空指针异常 */ public static void collectionNullPointerException(){ // 1. 集合为空时,调用集合相关方法会产生空指针异常 List<String> list = null; // if(list.isEmpty()){ // System.out.println("我是空!"); // } // 优化: // a. 先判断是否是null,不为null时在判空 if(list != null && list.isEmpty()){ System.out.println("我是空!"); } // 集合不为null时,也可以通过.size()方法判断集合是否为空 if(list != null && list.size() > 0){ System.out.println("我是空!"); } // b. 使用工具类判断集合是否为空 if(CollUtil.isEmpty(list)){ System.out.println("我是空!"); } // 2. 向集合中添加元素产生空指针异常 String key = null; String value = null; Hashtable<String,String> hashtable = new Hashtable<>(); // hashtable.put(key,value); // 优化: if(key != null && value != null){ hashtable.put(key, value); } /** * 总结: * 分析:部分集合中不允许设置key或value为null,这类集合主要有:Hashtable、ConcurrentHashMap、ConcurrentSkipListSet、 * ConcurrentLinkedDeque、ConcurrentLinkedQueue、LinkedBlockingDeque、LinkedBlockingQueue、ArrayBlockingQueue、 * PriorityBlockingQueue等。 */ } } **如有错误,欢迎批评指正!** [java_-CSDN_java]: https://blog.csdn.net/m0_46573836/article/details/108240375 [java_NullPointerException_-CSDN_java]: https://blog.csdn.net/chenzhengfeng/article/details/127703916 [java_-CSDN]: https://blog.csdn.net/qq_37645385/article/details/89069760
相关 Java中常见空指针异常案例 在Java编程中,`NullPointerException`是最常见的空指针异常。它通常发生在试图访问null对象的某个属性或方法时。下面是一些具体的案例: 1. **对象 ╰+攻爆jí腚メ/ 2024年09月20日 13:51/ 0 赞/ 14 阅读
相关 Java中常见的空指针异常实例 在Java中,`NullPointerException`是最常见的空指针异常。这种异常通常发生在试图访问null对象的属性或方法时。 以下是一些典型的`NullPointe 逃离我推掉我的手/ 2024年09月19日 07:03/ 0 赞/ 8 阅读
相关 Java中常见的空指针异常解析 在Java编程中,`NullPointerException`是最常见的空指针异常。当你试图访问一个对象的属性或者调用其方法时,如果这个对象是null(即未被初始化或者为空)的 太过爱你忘了你带给我的痛/ 2024年09月18日 14:33/ 0 赞/ 6 阅读
相关 Java中常见的空指针异常处理 在Java编程中,`NullPointerException`是最常见的空指针异常。这种异常通常发生在尝试访问null对象的属性或者调用方法时。 以下是一些处理空指针异常的常 谁借莪1个温暖的怀抱¢/ 2024年09月17日 15:36/ 0 赞/ 13 阅读
相关 Java中常见的空指针异常案例 在Java编程中,空指针异常(NullPointerException)是最常见的运行时异常之一。以下是一些常见的空指针异常案例: 1. 对象引用为null: ```jav 悠悠/ 2024年09月17日 08:42/ 0 赞/ 11 阅读
相关 Java中常见的空指针异常处理 在Java中,`NullPointerException`是常见的一种空指针异常。当试图访问一个null对象的属性或方法时,就会抛出这个异常。 以下是处理这种异常的一些常见方 系统管理员/ 2024年09月16日 12:15/ 0 赞/ 14 阅读
相关 Java中常见的空指针异常案例 在Java编程中,空指针异常(NullPointerException)是常见的一种运行时错误。当尝试访问一个null对象的属性或调用其方法时,就会抛出这个异常。 以下是一些 末蓝、/ 2024年09月06日 02:54/ 0 赞/ 16 阅读
相关 如何避免Java中常见的空指针异常 在Java中,空指针异常(NullPointerException)通常发生在尝试访问或者操作一个null对象时。以下是一些避免空指针异常的建议: 1. **检查对象是否为n 以你之姓@/ 2024年09月05日 23:12/ 0 赞/ 21 阅读
相关 Java中常见的空指针异常 参考链接: [java中什么是空指针异常以及为什么会产生空指针异常天上的云川的博客-CSDN博客什么是java空指针][java_-CSDN_java] [ja 朴灿烈づ我的快乐病毒、/ 2023年10月09日 15:38/ 0 赞/ 20 阅读
还没有评论,来说两句吧...