解决java.lang.NullPointerException报错以及分析出现的几种原因

java.lang.NullPointerException出现的几种原因:

1、字符串变量未初始化

2、接口类型的对象没有用具体的类初始化,比如:

Map map // 会报错

Map map = new Map(); //则不会报错了

3、当一个对象的值为空时,你没有判断为空的情况。

4、字符串与文字的比较,文字可以是一个字符串或Enum的元素,如下会出现异常

String str = null;

if(str.equals(“Test”)){

//这里的代码将不会被触发,因为会抛出java.lang.NullPointerException异常。

}

5、优先使用String.valueOf()方法代替toString()

当程序代码需要对象的字符串表示形式时,请避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印"null"

6、class被声明了类型, 默认 class = null; 这样在调用class中方法的时候系统只能给你个空指针异常, 给其实例化就好了:class = new Class();

7、返回null,方法的返回值不要定义成为一般的类型,而是用数组。这样如果想要返回null的时候就能避免许多不必要的NullPointerException

总之,NullPointerExceptionRuntimeException派生出来,是一个运行时异常。其意指可能会在运行的时候才会被抛出,一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以声明变量时最好给它分配好内存空间,给予赋值,例如拿该变量与一个值比较时,要么先做好该异常的处理要么给它进行判断先: if (str !=null && str “”){ …}

判断一个String的实例s是否等于“a”时,不要写成s.equals(“a”),这样容易抛NullPointerException,而写成"a".equals(s)就可以避免这个问题,不过对变量先进行判空后再进行操作更好,尽量避免返回null,方法的返回值不要定义成为一般的类型,用数组。这样如果想要返回null的时候,就返回一个没有元素的数组。就能避免许多不必要的NullPointerException

下图为异常分布图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java 运行报错has been compiled by a more recent version of the Java Runtime

    javaweb运行报错:has been compiled by a more recent version of the Java Runtime (class file version 55.0) 报错信息: Exception in thread "main" java.lang.UnsupportedClassVersionError: pers/cyz/BookManage has been compiled by a more recent version of the J

  • 解决idea启动报错javax.imageio.IIOException的问题

    idea启动报错javax.imageio.IIOException,解决点击ok打不开的问题 问题根源javax.imageio.IIOException: Can't get input stream from URL 出现该问题原因,根本原因就是因为下载了自定义idea背景图片的插件,如果你点击确定可以打开,百度有解决方案. 针对点击确定会闪退 点击确定之后出现闪退无法打开idea 1.点击确定,闪退之后 2.找到C盘的用户目录下, idea的异常都记录在这里 : 3.点击其中一个最新的文

  • 解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.toImmutableMap

    问题描述: 启动Azkaban报错: java.lang.NoSuchMethodError:com.google.common.collect.ImmutableMap.toImmutableMap 解决方法: 从报错信息来看,是找不到toImmutableMap这个方法.首先找到类ImmutableMap对应的Jar包为guava,然后在服务器查找这个Jar包: find / -name "guava*.jar" 发现除了Azkaban安装目录,其他程序目录下也有guava包.Az

  • 解决java.lang.NullPointerException报错以及分析出现的几种原因

    java.lang.NullPointerException出现的几种原因: 1.字符串变量未初始化 2.接口类型的对象没有用具体的类初始化,比如: Map map // 会报错 Map map = new Map(); //则不会报错了 3.当一个对象的值为空时,你没有判断为空的情况. 4.字符串与文字的比较,文字可以是一个字符串或Enum的元素,如下会出现异常 String str = null; if(str.equals("Test")){ //这里的代码将不会被触发,因为会抛

  • vue如何解决空格和空行报错的问题

    目录 解决空格和空行报错问题 vue出现空格警告的原因 解决空格和空行报错问题 到build文件夹下面的webpack.base.conf.js文件. 然后打开该文件,找到图下这段代码,把他注释掉. 注释掉之后,再进行页面编写的时候,空格不规范的情况下也不会再报错了. 有的版本的webpack.base.conf.js文件会如下图一样将空格检测写一个函数里,然后再module里调用,这种情况只需注释掉调用的那一行代码即可: 如图注释这一行即可 vue出现空格警告的原因 初学vue自己新建一个vu

  • Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法

    当然这个东西很吃内存,配置差点的就不推荐使用了. 最近用的时候, 发现, 建立PHP工程后,再打开 Zend Studio for Eclipse就出现这个错误 An internal error occurred during: "Building PHP projects ..."java.lang.NullPointerException 很烦人的. 出错后PHP projects 会停止build,代码提示就全部没有了.需要手动rebuild. 今天在zend论坛找到一个解决办

  • 解决MyEclipse10.7部署报错抛空指针异常问题的方法

    先对问题进行描述: (1)在MyEclipse Servers视图在MyEclipse 10.7.0在某些情况下,可能无法打开. 试图打开视图将导致NPE将被记录. Could not create the view: An unexpected exception was thrown. java.lang.NullPointerException at com.genuitec.eclipse.ast.deploy.core.Deployment.(Unknown Source) at co

  • Spring Boot2深入分析解决java.lang.ArrayStoreException异常

    将某个项目从Spring Boot1升级Spring Boot2之后出现如下报错,查了很多不同的解决方法都没有解决: Spring boot2项目启动时遇到了异常: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExcep

  • java.lang.NullPointerException出现的几种原因及解决方案

    java.lang.NullPointerException出现的几种原因: 1.字符串变量未初始化 2.接口类型的对象没有用具体的类初始化,比如: Map map // 会报错 Map map = new Map(); //则不会报错了 3.当一个对象的值为空时,你没有判断为空的情况. 4.字符串与文字的比较,文字可以是一个字符串或Enum的元素,如下会出现异常 String str = null; if(str.equals("Test")){ //这里的代码将不会被触发,因为会抛

  • 解决fastjson泛型转换报错的解决方法

    错误信息 Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.xh.demo.UserDO 泛性类 @Data public class ResultSetDTO<T> { private Integer totalSize; private Integer count; private List<T

  • 解决RedisTemplate调用increment报错问题

    使用spring redis的increment方法时,报错: nested exception is redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range 一.INCRBY key increment INCRBY key increment介绍如下: 将 key 所储存的值加上增量 increment .如果 key 不存在,那么 key 的值会先被初始化为

  • 解决java.lang.NoClassDefFoundError: android.support.v4.animation.AnimatorCompatHelper问题

    在开发过程中,有的时候引入了多个三方库.在调用的时候会出现版本对应不上的原因.就会出现如标题的异常.解决的办法就是在你的build.gradle里面加入如下代码块: configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.supp

  • Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException

    Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException解决办法: 利用Java操作XML,在操作XML过程中,执行到最后一步,在利用Transformer进行XML转换时出现NullPointerException错误,出问题的部分代码如下: //转换 TransformerFactory tFactory =TransformerFactory.newInstance(); Tr

随机推荐