动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Java中空指针异常情况及其解决方案的介绍

07-03 17:22 256浏览
举报 T字号
  • 大字
  • 中字
  • 小字

各位程序员在平时的工作中,肯定都会遇到一些令人头疼的运行和编写上的错误和问题。对于每一个java程序员来说,几乎都避免不了遇到空指针异常情况,特别是经验不足的刚入门不久的初学者。今天就java中空指针异常情况的问题,来说一下针对空指针异常的解决方案都有什么。

空指针异常情况属于运行异常,java.lang.NullPointerException。当引用名称为null时,就不能访问对象中的属性或方法,如果非要访问则就出现空指针异常

而我们都知道java是没有指针的,所以java中空指针异常情况中的“指针”是指的是java的引用,空指针就是空引用,java空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常情况。前面学过java变量和方法的朋友肯定都知道,成员变量和方法是属于对象的,在对象中才存在相对应的成员变量和方法,然后通过对象去调用这些成员变量和方法。对于空指针情况,它不指向任何对象,也就没有所谓的成员变量和方法,这个时候用它去调用某些属性和方法,就一定会出现空指针异常情况。
上面就是java中空指针情况的简单的概念介绍,有遇到过空指针情况的人都知道,它的调试和查找相对于其它的异常来说,是比较困难的,常常需要花费很大的精力去解决它。

再来看怎么解决java中空指针异常情况:在访问对象中的属性或方法之前,必须保证引用名称中存放对象的地址

通过举例子的方法,说明空指针异常的解决方案都有什么。要重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。

 第一个:

out.println(request.getParameter("username"));

代码段1的功能十分简单,就是输出用户输入"username"的值。看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单 域"username" 的值,或通过某种途径绕过表单直接输入时,此request.getParameter("username")的值为空(注意不是空字符串,是空对象 null。),out对象的println方法是无法直接对空对象操作的,因此代码段1所在的JSP页面将会抛出 "Java.lang.NullPointerException"异常。而且即使对象可能为空时,也调用Java.lang.Object或 Object对象本身的一些方法如toString(), equal(Object obj)等操作。

第二个:

String userName = request.getParameter("username");

If (userName.equals("root"))

{....}                                                             

如果有用户没有提供表单域"user Name"的值时,字符串对象user Name为null值,不能够将一个null的对象与另一 个对象直接比较,同样,代码段2所在的JSP页面就会抛空指针错误。代码段2的功能是检测用户提供的用户名,如果是用户名称为"root"的用户时,就执行一些特别的操作。

如果要把某个方法的返回值与常量做比较,把常量放在前面,可以避免调用null对象的equals方法。譬如:

    If ("root".equals(user Name))

{....}

即使user Name对象返回了null对象,这里也不会有空指针异常,可以照常运转。

第三个:假设有一个Student类,属性:name 方法flay( );

Student a;  String b = a.name;这个时候会报错,因为你的a是空的,解决的方法就是让a指向一个对象,这里有两种方法:解决方法1. Student a=new Student( );解决方法2: a=c;(c是一个不是空指针的Student类的对象)。

通过上面的对java中空指针异常情况及其解决方法的介绍,相信大家对空指针异常情况有了更深入的了解,尤其是java零基础的新手可以学习空指针异常情况的解决方案。相信在学好这篇文章的内容后,在后面的java培训课程的学习中,会对空指针异常情况有更丰富更准确的理解。

0人推荐
共同学习,写下你的评论
0条评论
摩一摩
程序员摩一摩

5篇文章贡献24633字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消