踩坑笔记—空指针异常NullPointerException

踩坑笔记—空指针异常NullPointerException,第1张

踩坑笔记—空指针异常NullPointerException
package XXX;

import java.util.Scanner;

public class UserDemo {
    public static void main(String[] args) {
        User user1 = new User();
        User user2 = new User();
        user1.setUsername("张三");user1.setPassword("Z123456");
        user2.setUsername("李四");user2.setPassword("L123456");

        User [] users = {user1,user2};
    }
}

在测试类中,简单创建了两个对象,user1和user2,同时将这两个对象储存到User [] users这个对象数组当中。

那么我们在编写程序的时候,程序肯定不能只满足于供两个用户实行登录、注册等功能,所以必将面临一个问题:对User数组进行扩容

扩容代码如下:

 User[] temp = new User[users.length + 1];
                for (int i = 0; i < users.length; i++) {
                    temp[i] = users[i];
                }
                for (int i = 3; i <= temp.length + 1; i++) {
                    User useri = new User();
                    temp[temp.length - 1] = useri;
                }
                temp[users.length].username = this.username;
                temp[users.length].password = this.password;

                users = temp;
                System.out.println("注册成功,您的用户名:" + this.username + "您的密码:" + this.password);

 其中一定要注意的是:因为我们创建的是一个用户对象的数组,数组当中每一个对象都对应着一个用户名和一个密码的值,所以我们在给数组进行扩容的时候,需要按照如下步骤来进行 *** 作:

①建立一个临时的数组,其数组长度是原来对象数组的长度+1;

②通过循环,将原数组中的user1和user2保存到这个临时的数组当中

③新建一个对象,将这个对象通过下标保存到临时数组当中的最后一位

④给新建的对象进行赋值,将用户手动输入的username以及password赋值给新建的对象

⑤将临时数组赋值给原来的数组。使原有的数组实现扩容

那么在我们为数组进行扩容的时候,一旦忽略了第2步或者第3步,将导致对象无法及时保存到数组当中,也就是说数组当中的对象为null,那么在这个时候我们调用数组进行比较或者其他 *** 作的时候,java就会给我们报出空指针异常。

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5636779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存