有哪些避免空指针的方法

参考答案

一、空指针定义

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

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

实例:

Object obj = null;
String str = obj.toString();

二、什么时候会发生空指针异常

前往查看:什么时候会发生空指针异常

三、避免空指针的常用方法

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

实例:

if(status.equals(SUCCESS)){
    // do something
}

这时status可能为null造成空指针异常,应该把常量放在前面。

if(SUCCESS.equals(status)){
    // do something
}

2、初始化默认值

在对象初始化的时候给它一个默认值或者默认构造实现。
实例:

Object obj = new Object();
String str = "";

3、返回空集合

返回一个集合时,默认会是null,这时如果调用者使用这个集合,就可能造成空指针,进而使程序结束。例如:

public List<User> getUsers(){
    List<User> list = null;
    // do something
    return (list == null) ? new ArrayList<>() : list;
}

4、断言

断言是用来检查程序的安全性的,在使用之前就进行检查条件,如果不符合条件就报异常,符合就继续。

Java中自带的断言关键字为:assert。

实例::

assert name == null : "名称不能为空";

默认是不启动断言检查的,需要带上JVM参数:-anableassertions 才能生效。

Spring中的用法:

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

5、Optional

Optional是JDK 8 的新特性,不用!= null来作判断,在一个对象里连续判断的时候非常有用。

 

以上,是Java面试题【有哪些避免空指针的方法】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

👇阅读作者更多技术干货👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧