解决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
总之,NullPointerException
由RuntimeException
派生出来,是一个运行时异常
。其意指可能会在运行的时候才会被抛出,一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以声明变量时最好给它分配好内存空间,给予赋值
,例如拿该变量与一个值比较时,要么先做好该异常的处理要么给它进行判断先: if (str !=null && str “”){ …}
判断一个String的实例s是否等于“a”时,不要写成s.equals(“a”),这样容易抛NullPointerException,而写成"a".equals(s)就可以避免这个问题,不过对变量先进行判空后再进行操作更好,尽量避免返回null,方法的返回值不要定义成为一般的类型,用数组
。这样如果想要返回null的时候,就返回一个没有元素的数组。就能避免许多不必要的NullPointerException
下图为异常分布图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
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
随机推荐
- angular.js分页代码的实例
- jquery ajax提交表单从action传值到jsp实现小结
- 批处理FTP上传文件
- 原生js的弹出层且其内的窗口居中
- jQuery获取地址栏参数插件(模仿C#)
- php中用数组的方法设置cookies
- 使用JavaBean创建您的网上日历本(1)
- 使用C语言实现CRC校验的方法
- JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
- 注册页面之前先验证用户名是否存在的php代码
- Marquee配合DIV实现的文字滚动效果代码
- 智能监测自动重启Apache服务器的Shell脚本
- 基于jquery的slideDown和slideUp做手风琴
- 一种可以穿透还原卡和还原软件的代码
- 使用jdk7的nio2操作文件拷贝和剪切示例
- Java设计模式之单态模式(Singleton模式)介绍
- C基础 mariadb处理的简单实例
- 详解js异步文件加载器
- Species Tree 利用HashTable实现实例代码
- python生成excel的实例代码