栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

踩坑笔记—空指针异常NullPointerException

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

踩坑笔记—空指针异常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就会给我们报出空指针异常。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号