Java基础系列(面试必备):如何避免空指针 !

导读:本篇文章讲解 Java基础系列(面试必备):如何避免空指针 !,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Java基础系列(面试必备):如何避免空指针 !


前言

今天博主将为大家分享:Java基础系列(面试必备):如何避免空指针 !不喜勿喷,如有异议欢迎讨论!

空指针是我们 Java 开发人员经常遇到的一个基本异常,这是一个极其普遍但似乎又无法根治的问题。


什么是空指针?

当一个变量的值为 null 时,在 Java 里面表示一个不存在的空对象,没有实际内容,没有给它分配内存,null 也是对象成员变量的默认值。

所以,一个对象如果没有进行初始化操作,这时候,如果你调用这个对象的方法或者变量,就会出现空指针异常。

Object object = null;
String string = object.toString();

在这里插入图片描述

从类结构图来看,空指针它是属于运行时异常 RuntimeException 的子类,它不是捕获型的,只有在程序运行时才可能报出来,而且会造成程序中断。

什么是运行时异常及异常的分类请看这篇文章:Java基础系列(基础):搞清楚Java异常机制!


下面说几个空指针的几个最常见的案例及解决之道。

  1. 字符串比较,常量放前面

    if(status.equals(SUCCESS)){

    }
    这个时候 status 可能为 null 造成空指针异常,应该把常量放前面,就能避免空指针异常。

    if(SUCCESS.equals(status)){

    }
    这个应该在各种开发规范里面都会提到,也是最基础的。

  2. 初始化默认值
    在对象初始化的时候给它一个默认值或者默认构造实现,如:

    User user = new User();
    String name = StringUtils.EMPTY;

  3. 返回空集合
    在返回一个集合的话,默认会是 null,统一规范返回一个空集合。

    public List getUserList(){
    List list = userMapper.gerUserList();
    return list == null ? new ArrayList() : list;
    }
    这样接收方就不用担心空指针异常了,也不会影响业务。

  4. 断言
    断言是用来检查程序的安全性的,在使用之前进行检查条件,如果不符合条件就报异常,符合就继续。
    Java 中自带的断言关键字:assert,如:

    assert name == null : “名称不能为空”;
    输出:

    Exception in thread “main” java.lang.AssertionError: 名称不正确
    不过默认是不启动断言检查的,需要要带上 JVM 参数:-enableassertions 才能生效。
    Java 中这个用的很少,建议使用 Spring 中的,更强大,更方便好用。
    Spring中的用法:

    Assert.notNull(name,“名称不能为空”);

  5. Optional
    Optional 是 JDK 8 新增的新特性,再也不用 != null 来判断了,这个在一个对象里面的多个子对象连续判断的时候非常有用。


到这里:Java基础系列(面试必备):如何避免空指针 !分享完毕了,快去试试吧!


最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97791.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!