精华内容
下载资源
问答
  • 空指针异常是什么原因
    千次阅读
    2021-03-22 10:35:29

    定义

    首先介绍一下空指针异常的定义:
    空指针异常(NullPointerException):空指针异常是指java中的异常类,当应用程序试图在需要对象的地方使用 null 时,就会抛出该异常.

    简而言之,就是当你要使用一个对象时,结果对象并无内容只有null值,那就会抛出空指针异常.(下文简称NPE)

    可能原因

    那么当程序中出现了空指针异常,我们该如何去找到并排除异常呢?

    出现NPE时,我们首先需要根据抛出的异常信息,去找到出现异常的行号!
    之后我们需要去检查三个方面:

    1.检查出现NPE的行是否有对象调用了方法

    2.如果有对象调用方法的话,检查调用方法的对象是什么时候进行赋值的,现在是否还有值

    3.如果该对象是由spring容器进行依赖注入(DI)进行复制的,那要检查该对象的引用是否使用了spring框架的特定注解(@Autowired等)来描述,对象引用的属性所在的类是否交给了spring框架管理(@springboottest等注解)

    通过这三点连续的检查,应该可以锁定大部分空指针异常出现的原因,找到原因后,修改就很简单了,根据所需要求修改程序即可

    更多相关内容
  • 面试题-空指针异常原因

    千次阅读 多人点赞 2020-10-21 20:42:39
    2:空指针异常发生在对象为空,但是引用这个对象的方法。例如: String s = null; //对象s为空(null) int length = s.length();//发生空指针异常 3:一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去...

     

     1:NullPointerException由RuntimeException派生出来,是一个运行级别的异常。意思是说可能会在运行的时候才会被抛出,而且需要看这样的运行级别异常是否会导致你的业务逻辑中断。
     2:空指针异常发生在对象为空,但是引用这个对象的方法。例如: String s = null; //对象s为空(null) int length = s.length();//发生空指针异常  
     3:一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以生命一个变量时最好给它分配好内存空间,给予赋值。  

     4:比如变量为空,而你没有去判断,就直接使用,就会出现NullPointException。写程序时严谨些,尽量避免了,例如在拿该变量与一个值比较时,要么先做好该异常的处理如: if (str == null) {   System.out.println("字符为空!"); } 当然也可以将这个值写在前面进行比较的,例如,判断一个String的实例s是否等于“a”,不要写成s.equals("a"),这样写容易抛出NullPointerException,而写成"a".equals(s)就可以避免这个问题。不过对变量先进行判空后再进行操作比较好。
     5:尽量避免返回null,方法的返回值不要定义成为一般的类型,而是用数组。这样如果想要返回null的时候,就返回一个没有元素的数组。就能避免许多不必要的NullPointerException,使用NullObject返回代替返回null确是一种不错的选择。  

    展开全文
  • Java造成空指针异常原因

    千次阅读 2020-05-29 11:24:13
    map.get("aa").toString() map取值为null,转字符串会报空指针

    一、什么是NullPointException?

    NullPointException,空指针异常。即当一个变量值为null时,在Java中表示一个不存在的空对象,没有赋值,没有分配内存,此时你调用该对象的方法或变量时,就会引起空指针异常,所以调用前要先对对象进行初始化操作。

    二、空指针异常的可能原因有哪些?

    1.集合为空时

    例:map取值调用toString方法时,会出现空指针异常

    Map<String,Object> map = new HashMap<String,Object>();
    map.get("aa").toString();
    //map取key为aa的value值,此时value值为null,调用toString方法会报空指针异常

    2.对象初始化值为null

    Student stu = null;
    stu.getScore();
    //对象没有进行初始化,调用对象里面的方法会报空指针异常

    3.equal方法比较

    Object a = null; 
    a.equals("s");
    //此时a的值为null,会报空指针异常。

    三、如何避免空指针异常?

    1.使用String.valueOf()方法替代toString()方法。

    2.集合或对象使用时,进行赋值,返回一个空的集合或创建一个对象进行初始化,避免使用null值。

    3.使用equals比较时,常量放在前面。

     

     

     

     

    展开全文
  • 空指针异常

    2021-08-05 00:42:07
    万恶的空指针异常编程中最常见的错误一种空指针异常出现问题的原因解决方法Why如何避免 编程中最常见的错误 当我们编程时,常常会出现java.lang.NullPointerException这种报错,一般情况下空指针异常是比较容易解决...

    编程中最常见的错误

    当我们编程时,常常会出现java.lang.NullPointerException这种报错,一般情况下空指针异常是比较容易解决的,但有些时候空指针异常却不容易找出原因,使得人抓狂怀疑人生。

    一种空指针异常

    一下代码是一种常见的错误:

    public class User {
        public static final Integer constants_id = 1;
        private Integer id;
        public User(Integer id){
            this.id = id;
        }
        public User(){};
        public Integer getId() {
    
            return this.id;
        }
    }
    
        //假设user不为null
        if (user.getId().equals(User.constants_id)){
                ......
          }
    

    容易看出这种写法的问题在于user的id值为null时,会出现空指针异常。
    我们可以把上面的代码变为:

        if (User.constants_id.equals(user.getId())){
                ......
         }
    

    这样就可以避免上面提到的问题了,因为User.constants_id是一个常量这样就避免了空指针异常。
    但是当User类改变一下:

       public static final int constants_id = 1;
    

    这时上面代码就会报错因为基本类型不能调用方法。
    我们可以将代码改成这样来避免此类问题:

       if (User.constants_id == user.getId()){
                ......
         }
    

    看起来没有问题,User.constants_id是常量不会空指针异常,user.getId() 也不会出现空指针异常,得到这两个数值进行比较即可,好像没有什么问题。
    但事实是这样会出现我们要讲到的比较难以发现的空指针异常问题。

    出现问题的原因

    原因在于当执行 User.constants_id == user.getId() 这行代码时,User.constants_id是int类型的数据,而user.getId()中的id是Integer类型的数据,这时JDK会将id自动拆箱成为int类型的数据再来进行比较。而自动拆箱会调用id的 intValue() 函数,这时当id值为null时就会报错出现空指针异常。

    解决方法

    我们可以调用如下代码来进行比较来避免空指针异常。

    Objects.equals(user.getId(), User.constants_id);
    

    Why

    当我们查看**Objects.equals(Object a, Object b)**的源码时会发现和我们上面写的好像差不多

        public static boolean equals(Object a, Object b) {
            return (a == b) || (a != null && a.equals(b));
        }
    

    这个a == b不是和我们上面写的一样吗?为什么他会避免空指针异常而我们写的不行呢?难道是程序认人?我(菜鸡)写的不行?大佬写的行!!!
    这当然不是原因。当我们仔细观看这个函数的实现时我恍然大悟!假设我们就把刚才的那两个参数传入到Objects.equals(Object a, Object b) 函数中去,得到Objects.equals( User.constants_id, user.getId()) 由于该函数需要传入Object类型的数据,但由于User.constants_id数据为int,这时jdk会将int类型的数据自动装箱为Integer,由于int类型不存在空值的情况(null)所以自动装箱机制是不会出现异常的,这时的 a == b 不再是对两个数值的比较而是地址的比较(基本类型比较的是数值,引用类型比较的是地址值),所以当两个对象不是同一个引用对象或者不同时为null时,则会用 a != null && a.equals(b) 来判断两个对象的数值是不是相等。总的来说该函数是把不安全的自动拆箱机制转化为安全的自动装箱机制来避免出现空指针异常的。

    如何避免

    建议将User.constants_id字段的值设置成为int的包装类型来避免此类问题,避免使用基本类型。(使用包装类型比使用int不会多占用多少资源但是却可以使得我们避免此类错误)

    后续

    user对象的id属性不能使用int类型而必须使用包装类型!
    原因是因为int类型是基本数据类型,基本类型没有null值。在默认情况下int是0值。当int为0值时我们不能判断该id是0值还是该id没有赋值,这会给我们带来了困扰。所以必须使用int的包装类型,来避免此类情况的出现。

    展开全文
  • 空指针异常的解释及原因
  • 空指针异常主要原因以及解决方案

    万次阅读 2020-03-23 00:14:44
    空指针异常产生的主要原因如下: (1)当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在 (2)当访问或修改一个对象不存在的字段时会产生异常obj.method() // method方法不存在 (3)字符串...
  • js中的空指针异常

    2022-04-10 14:08:45
    js语法中什么时候会出现空指针异常? 答:对undefined 或 null 进行取值 就会出现空指针异常,并且下面代码将不再执行 //案例 1 let data = ''; let a = data.name; alert(a + "===========") // undefined====...
  • 如果只是进行了一个null,没有进行new创建,那么将会发生空指针异常–NullPointerException 原因:忘了new 解决:补上new 代码: package com.company; public class Main { public static void main(String[] ...
  • 当C++遇到空指针异常......

    千次阅读 2022-04-21 08:54:58
    在Java语言中,有空指针异常,在编程时为了代码安全,在遇到空指针时,防止程序崩溃,会捕捉空指针异常,即NullPointerException异常类。 比如下面就是一段捕获NullPointerException异常的Java代码片段: try { 。...
  • 来源:blog.csdn.net/qq_44543508/article/details/94589868java.lang.NullPointerException出现的几种原因:1、字...
  • dubbo空指针异常

    千次阅读 2018-11-23 22:31:08
    今天写了一个关于dubbo的demo,结果报出了空指针异常,错误如下: 严重: Servlet.service() for servlet [springmvc] in context with path [] threw exception [Request processing failed; nested exception is ...
  • 空指针异常是什么意思?        这里我们首先要明确什么是指针,指针指的是什么? 指针:我所理解的指针指的是java程序中的对象 那什么是空?      &...
  • Java中的空指针异常

    千次阅读 多人点赞 2021-11-25 14:56:31
    Java中的空指针异常一、什么是空指针异常?1.1 异常的分类1.2 空指针异常引入1.3 空指针异常说明二、Java中的null三、空指针产生的常见情况及避免办法3.1 字符串常量未初始化,比较时导致空指针异常3.2 接口类型的...
  • 问题:因为是new的redis导致每次都null,应该从spring容器中获取。 RedisUtil redisUtil1 = new RedisUtil(); 解决:spring容器中获取 ...RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
  • java 空指针异常造成的原因有哪些

    千次阅读 2017-05-27 12:09:16
    实际上空指针异常 也就是你用了一个没有实际值的对象1.... 数据库查询方面的空指针异常,数据库中储存的值为null或不存在4. 结果集 rs 是空的啊或者未初始化就被调用了 转载于:https://blog.51cto.com/12945...
  • 前一段时间写实验,遇到了一个java空指针异常的问题,经过多方查询资料,中越解决了异常,因此决定记录一下本次异常的解决
  • 因为我jmx文件里有读txt... ----找到原因了,jmter执行机并不是将$JMETER_HOME/bin作为相对路径,如果设置了环境变量,在别处启了jmeter-server,那相对路径就是启动jmeter-server的路径了,所以总报空指针找不到文件。
  • 空指针异常原因

    2015-06-07 22:46:55
    1,在hashmap中取不存在的键所对应的值  TextView textTitle = (TextView)findViewById(R.id.post_name);  textTitle.setText("公告");  TextView postDetails = (TextView)findViewById(R.id.post_details)
  • 我的fragment是以静态的方式加入的activity,然后在fragment中一直有布局空指针的问题,参考了网上的很多办法都没有用。 <fragment android:layout_width="match_parent" android:layout_height="match_...
  • 执行定时器报空指针异常

    千次阅读 2019-09-19 09:15:34
    //此处报空指针异常,是因为dataAcquisitionVoMapper没有正常注入 } for (int i = 1; i ; i++) { param.put("tabler", "hq_equipment_monitor_data_r" + i); param.put("tablef", "hq_equipment_monitor_...
  • 空指针常见原因和解决办法

    千次阅读 2021-01-22 11:22:09
    容易出现空指针异常的场景 在调用对象方法时 比如处理字符串常用的replace方法,数组的length方法,map的size方法等等; str.replace(…) 如果str为null,这里就直接空指针了 判断一个str是否等于"test",你直接str...
  • 在WakeUp中实现了功能,然后在主活动的onCreate方法中实例化了一个WakeUp对象,结果报以下错误,不太明白原因,求教。 java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View ...
  • Android开发中的空指针异常问题

    千次阅读 2019-06-19 04:37:36
    在进行android开发过程中,经常会出现空指针的问题(我的项目就出现过context空指针异常)。在查找相关资料后,总结了一些常见的空指针异常。 指针是java中的对象的引用。比如String s;这个s就是指针。空指针就是...
  • 一、错误出现的场景:dubbo 的RPC远程调用,但是调用的服务总是提示“空指针异常”。 出现上述情况的原因:需要扫描的dubbo接口,dubbo 扫描service对象失败。 而造成失败的原因: 1、缺少dubbo 的jar 文件, <...
  • sqoop 提交导出数据到oracle 脚本,直接出现空指针异常:java.lang.NullPointerException 异常信息模糊无法定位, 日志显示位于OracleManager 类的第980行,源码如下:   从源码980行可以看出出现问题的可能只有...
  • Android编程中常见的空指针异常 在Android编程中,空指针异常通常是不出现则以一出现就有惊人的破坏力。 下面我们一起来看看常见的破坏力:
  • 一句话概括:空指针异常,是在程序在调用某个对象的某个方法时,由于该对象为null产生的。所以如果出现此异常,大多数情况要判断测试中的对象是否被成功的注入,以及Mock方法是否生效。基础出现空指针异常的错误信息...
  • Java空指针异常和解决办法

    千次阅读 2022-04-19 20:37:21
    目录问题描述:尝试1:尝试2:使用Optional防止出现空指针异常引用 问题描述: public class Main20220419 { public static void main(String[] args) { String id = null; Item item = ItemService.getItemById...
  • 在项目的开发中遇到了在servlet中使用getServletContext空指针的错误,觉得挺有意思的,下面解释一下。 网上查了许多都说是重写了init方法造成的,但我并不是,所以稍微研究了一下。 首先是为什么servlet里头会有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 100,460
精华内容 40,184
热门标签
关键字:

空指针异常是什么原因