java.lang.NullPointerException异常问题解决方案
java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性。
给出三种情况,
第一种情况,在启动类中定义了引用类型变量,赋值为空:
/**
* 引用类型变量没有指向对象所引起的空指针异常
* @author Superhero
* @version 2018年12月16日上午10:32:43
*/
//图书类
class Books
{
private String name;
private String author;
private double price;
public Books()
{
}
public Books(String name, String author, double price)
{
this.name = name;
this.author = author;
this.price = price;
}
public String getName()
{
return name;
}
public String getAuthor()
{
return author;
}
public double getPrice()
{
return price;
}
}
//启动类
public class NullPointerExceptionTest1
{
public static void main(String[] args)
{
Books book=null;
//下面一行代码会报指针异常错误:
System.out.println("name:"+book.getName()+", author:"+book.getAuthor()+", price:"+book.getPrice());
}
}
第二种情况:创建了一个引用类型的数组,却没有给数组元素指向对象而调用了。
public class NullPointerExceptionTest2
{
public static void main(String[] args)
{
Books[] books = new Books[3];
books[0] = new Books("NullPointerException","Superhero",88.8);
//books[1],book[2]没有指向对象,所以也报空指针异常
for(Books book : books)
System.out.println("name:"+book.getName()+", author:"+book.getAuthor()+", price:"+book.getPrice());
}
}
第三种情况是在类中定义了引用类型属性,却没有指向对象而调用了非静态的方法或属性,和第一种情况类似,这里就不给代码了。
到此这篇关于java.lang.NullPointerException异常问题解决方案的文章就介绍到这了,更多相关java.lang.NullPointerException异常内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- Java空指针异常NullPointerException的原因与解决方案
- 解决java.lang.NullPointerException问题(空指针异常)
- Java如何优雅地避免空指针异常(NullPointerException)
- Java中redisTemplate注入失败NullPointerException异常问题解决
- 详解Java中NullPointerException异常的原因和解决办法
- 详解Java中NullPointerException异常的原因详解以及解决方法
- java.lang.NullPointerException 如何处理空指针异常的实现
- Java中NullPointerException的异常解决
相关文章
springboot+dynamicDataSource动态添加切换数据源方式
这篇文章主要介绍了springboot+dynamicDataSource动态添加切换数据源方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01
SpringBoot2底层注解@ConfigurationProperties配置绑定
这篇文章主要介绍了SpringBoot2底层注解@ConfigurationProperties配置绑定,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-05-05
关于TransmittableThreadLocal线程池中线程复用问题的解决方案
这篇文章主要介绍了关于TransmittableThreadLocal线程池中线程复用问题的解决方案,线程池复用线程,如果子线程执行完未移除上下文,则会导致后续线程可以取到之前线程设置的属性,需要的朋友可以参考下2023-11-11
SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)
本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链路,通过使用MDC和配置日志格式,可以在日志中包含traceId,便于问题排查,同时,还在返回的包装类中注入traceId,以便用户反馈问题,感兴趣的朋友一起看看吧2025-02-02
MybatisPlus 插入或更新数据时自动填充更新数据解决方案
本文主要介绍了MybatisPlus 插入或更新数据时自动填充更新数据解决方案,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-09-09


最新评论