java.lang.NullPointerException空指针异常

createh53周前 (12-20)技术教程18

NPE空指针异常出现的原因是什么?

空指针异常应该是初学编程的同学遇到最多的一种异常,由于缺少编程经验,对引用数据类型的数据使用不恰当导致的异常。

空指针就是空引用,java空指针异常就是引用变量本身为null,却调用了null的方法,这个时候就会出现空指针异常。

接下来给大家演示一下空指针异常,以及如何避免空指针的出现

创建一个java类Student


package com.entity;

import java.io.Serializable;

/**

* @descrption:学生实体类

* @author: lizhilun

*

*/

public class Student implements Serializable{

private static final long serialVersionUID = 1L;

private Integer id;//主键

private String name;//姓名

private Integer age;//年龄


public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

}

创建一个测试类


package com.exception;

import com.entity.Student;

/**

* @descrption:空指针异常演示

* @author: lizhilun

*

*/

public class NPEDemo {

static String str;//未实例化字符串str

static Student stu=null;//未实例化对象

public static void main(String[] args) {

System.out.println(stu.getName());

System.out.println(str.equals(""));

}

}

我们很明显的看到不管是对象还是字符串,只要是null然后调用其方法都将导致空指针异常的出现。

如何解决空指针异常呢?

接下来对代码进行改造



package com.exception;

import com.entity.Student;

/**

* @descrption:空指针异常演示

* @author: lizhilun

*

*/

public class NPEDemo {

static String str;//未实例化字符串str

static Student stu=null;//未实例化对象

public static void main(String[] args) {

stu=new Student();//实例化Student对象

stu.setName("高圆圆");

System.out.println(stu.getName());

if(str!=null) {//调用方法之前先判断是否为null,如果不为null再执行其方法

System.out.println(str.equals(""));

}

}

}

如果我们确保引用变量不为null的情况下再调用其方法,如果确定不了需要在调用其方法之前先判断是否为null,如果不为null再调用,不过为了程序的健壮性建议大家在调用方法之前先判断一下对象是否为空,这样就能很好的规避空指针异常了。

相关文章

前端面试题(1):undefined和null的区别

寒冬来临,裁员的消息此起彼伏。现在准备面试肯定是有备无患,我准备了一系列前端面试的常见问题,和大家一起学习。不管你是不是有找工作的需求,多掌握一些肯定是有益无害。1.undefined和null有什么...

在Java中如果对象的引用被设置为null,垃圾收集器应当如何工作?

在Java中,如果在程序初始化之初就将一个对象的引用设置为NULL。那么JVM的垃圾回收机制该如何工作呢?是不是就会立即释放该对象所占用的内存呢?答案是否定的,将一个对象设置为NULL,垃圾回收机制并...

Java判空,Optional和工具类真香?还是if(obj == null)更靠谱?

背景描述最近在开发项目时,我遇到了一个需要从 Hyperlink 对象中获取 link 属性的小需求。这个过程中我需要判断 Hyperlink 对象是否为 null,以防止出现空指针异常。面对这种情况...

关于Java String 类型转换时null的问题

开发中经常遇到从集合类List、Map中取出数据转换为String的问题,这里如果处理不好,经常会遇到空指针异常java.lang.NullPointerException,在此总结一下常用转换为St...

MySQL数据库的表中 NULL 和 空值 到底有什么区别呢

浅谈 NULL 和 空值的区别NULL也就是在字段中存储NULL值空字符串值也就是字段中存储空字符('')我们来通过测试来看看 他们彼此的区别:1、占用空间区别mysql> se...

Java 8 Optional:优雅地避免 NPE java防止xss

本篇文章将详细介绍 Optional 类,以及如何用它消除代码中的 null 检查。在开始之前首先来看下什么是 NPE,以及在 Java 8 之前是如何处理 NPE 问题的。空指针异常(NullPoi...