参考答案
一、空指针定义
当一个变量的值为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—