java.lang.nullpointerexception 怎么解决? java.lang.NullPointerException...
这个是空指针异常,空指针的解决办法: 重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。
在Java中一般报空指针异常的原因有以下几种:
1、字符串变量未初始化;
2、接口类型的对象没有用具体的类初始化,比如:
List lt;会报错
List lt = new ArrayList();则不会报错了
3、当一个对象的值为空时,你没有判断为空的情况。你可以试着把下面的代码前加一行代码: if(rb!=null && rb!="")
改成:
if(rb==null);
if(rb!==null&&rb!="") 或者if((“”).equals(rb))
扩展资料:空指针异常的报错
root cause
java.lang.NullPointerException
Dao.BookInfor.ImFromClassification(BookInfor.java:31
org.apache.jsp.front.home_jsp._jspService(home_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
空指针异常:
有几种情况:
1. 你定义了一个对象引用,但没有new,就拿来用了(比如用它里面的方法或实例变量,o.fun() 或 a = o.a)
2. 你那个对象引用指向的原来是new过的对象,但后来又把null赋值给它了,再拿来用。
总之,是一个引用指向了null再来用就会出现这种exception
java.lang.NullPointerException是java常见的异常, 中文常常翻译为 空指针异常.
触发条件: 当一个对象为空(null)时, 试图调用对象的方法, 或者访问或者修改对象的属性时 ,就会抛出空指针异常.
解决该异常的办法:
尽量避免使用为空的对象,
或者先判断是否为null 然后再使用,
或者使用try catch 捕获到该异常后处理这个异常.
参考代码
错误示范
public class Demo {
public static void main(String[] args) {
String str = null;
if(str.equals("ABC")) { //str为空,调用str的equals方法, 就会报错
System.out.println("字符串的内容是ABC");
}else {
System.out.println("字符串的内容不是ABC");
}
}
}
解决示范1
public class Demo {
public static void main(String[] args) {
String str = null;
if("ABC".equals(str)) { //使用"ABC"这个不为null的对象,调用他的equals方法
System.out.println("字符串的内容是ABC");
}else {
System.out.println("字符串的内容不是ABC");
}
}
}
示范2: 先判断是否为空, 不为空, 才调用方法和访问属性
public class Demo {
static String str1;
public static void main(String[] args) {
if(str1!=null) {//先判断它不为空,才调用 它的length方法
System.out.println(str1.length());
}else {
System.out.println("str1对象为空");
}
}
}
示范3
import java.util.Scanner;
public class Demo {
static String str1;
public static void main(String[] args) {
try {
System.out.println(str1.length());
}catch(NullPointerException e) {
System.out.println("str1为空...请赋值..");
Scanner sc = new Scanner(System.in);
str1 = sc.nextLine();
System.out.println("str1的长度为:"+str1.length());
}
}
}
//str1为空...请赋值..
//ABC
//str1的长度为:3
java.lang.nullpointerexception在java中是空指针异常,主要跟与对象的操作相关。
比如有如下代码:
String userName = request.getParameter("username");
If (userName.equals("root")) {
//逻辑处理
}
本代码功能是:检测用户提供的用户名,如果是用户名称为"root"的用户时,就执行一些特别的操作。
说明:
在代码段中,如果有用户没有提供表单域"username"的值时,字符串对象userName为null值,不能够将一个null的对象与另一个对象直接比较,就会抛出(java.lang.NullPointerException)空指针错误。
为了确保进行操作或引用的对象非空,假若我们要对某对象进行操作或引用,我们首先去检查该对象是否已经实例化且不为空;并且在系统中加入针对对象为空时情况的处理。
如:采用String对象保存用户提交的结果;在如果涉及对象的操作时,先检测其是否为空后,检查到对象为空后,可再选择进行以下任一种处理方式:
处理方式 1) 检查到对象为空时,设置对象值为空字符串或一个默认值;
处理方式 2) 检测到对象为空时,根本不执行某操作,直接跳转到其他处理中。
处理方式 3) 检查到对象为空时,提示用户操作有错误。
首先找到发生异常的那行,然后寻找逐步向上找源头。如果没有必要查找源头,可以直接绕过它。譬如:
1,List<String>books=BooKDAO.findAll();
2,intsize=books.size();
如果第2行发生空指针异常了,知道books肯定为null了,这时查找BookDAO.的findAll方法,如果findAll()方法又调用了其他的方法,可以继续查下去。如果没有业务需要,可以直接写成:
List<String>books=BooKDAO.findAll();
intsize=0;
if(books!=null){
size=books.size();
}
或者
List<String>books=BooKDAO.findAll();
intsize=0;
try{
size=books.size();
}catch(NullpointerException){
size=0;或者不写或者打印错误
}
/iknow-pic.cdn.bcebos.com/8694a4c27d1ed21b27f786aba06eddc451da3f45"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/8694a4c27d1ed21b27f786aba06eddc451da3f45?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/8694a4c27d1ed21b27f786aba06eddc451da3f45"/>
扩展资料
最重要的类是Object(它是类层次结构的根)和Class(它的实例表示正在运行的应用程序中的类)。把基本类型的值当成一个对象来表示通常很有必要。包装器类Boolean、Character、Integer、Long、Float和Double就是用于这个目的。
类Math提供了常用的数学函数,比如正弦、余弦和平方根。类似地,类String和StringBuffer提供了常用的字符串操作。
类ClassLoader、Process、Runtime、SecurityManager和System提供了管理类的动态加载、外部进程创建、主机环境查询(比如时间)和安全策略实施等“系统操作”。
类Throwable包含了可能由throw语句抛出的对象(§14.16)。Throwable的子类表示错误和异常。
参考资料:/baike.baidu.com/item/java.lang/5179788"target="_blank"title="java.lang-百度百科">java.lang-百度百科
空指针异常,大概是找不到文件,要看源码才知道是什么问题,在Main类的readConfig()方法出错,在该类的第99行抛的异常,读取不到配置文件。
这个是空指针异常。你是要安装该文件?!