Java教程

那些情况会导致操作字符串 数组和集合时出现Java空指针

本文主要是介绍那些情况会导致操作字符串 数组和集合时出现Java空指针,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

场景复现

package com.github.ybqdren;

/**
 * Wen(Joan) Zhao <withzhaowen@126.com>
 * 2021/11/6
 * <h1>字符串 数组 集合在使用时使用空指针</h1>
 */
public class BasicUsageNpe {
    private static boolean StringEquals(String x,String y){
        return x.equals(y);
    }

    public static class User{
        public String name;
    }

    public static void main(String[] args){

    }
}


第一种场景:字符串使用 equals 可能会报空指针错误

System.out.println(StringEquals("xyz",null));
System.out.println(StringEquals(null,"xyz"));

第二种场景:对象数组new出来,但是元素没有初始化

User[] users = new User[10];
for(int i=0;i != 10;i++){
    users[i].name = "ybqdren-"+i;
}

第三种场景:向List对象addAll 传递null会抛出空指针

List<User> users = new ArrayList<User>();
User user = null;
List<User> users_ = null;
users.add(user);
users.addAll(users_);

在第37行抛出了错误:
在这里插入图片描述



为什么add()可以添加null,但是addAll不可以?

因为add()只是将对象进行了赋值存储
在这里插入图片描述
但是addAll()调用了对象的方法
在这里插入图片描述
因此后者会引发空指针异常,但是前者不会

此处可参考总结Java NullPointerException 异常出现情况,以及如何从根源上避免空指针异常 提到的第一种情况



上一篇文章 那些情况会导致赋值时自动拆箱出现空指针,以及如何避免这些情况

这篇关于那些情况会导致操作字符串 数组和集合时出现Java空指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!