JAVA 对象数组和空指针异常
对象数组同基本类型数组相同
Test_10 [] students;
Test_10 students [];
int [] array;
int array [];
此时创建的数组,并没有分配到内存空间
内存的分配有两种,一种是静态分配,另一种时动态分配
students [0] = new Test_10("aaaa", 1);
students [1] = new Test_10("bbbb", 2);
students [2] = new Test_10("cccc", 3);
students [3] = new Test_10("dddd", 4);
students [4] = new Test_10("eeee", 5);
Test_10 [] students = { new Test_10("aaaa", 1),new Test_10("bbbb", 2),new Test_10("cccc", 3),new Test_10("dddd", 4),new Test_10("eeee", 5),
这样一个个添加未免效率太低了,并且大多时候,我们并不确定需要有多少记录去存储,如果每次都要改,也太麻烦了
因此想到基本类型数组那样去赋值,但是那样写编译器总是抛出空引用(空指针)异常
空指针异常:空指针就是空引用,java空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常。可以理解,成员变量和方法是属于对象的(除去静态),在对象中才存在相对应的成员变量和方法,然后通过对象去调用这些成员变量和方法。对于空指针来说,它不指向任何对象,也就没有所谓的成员变量和方法,这个时候用它去调用某些属性和方法,自然就会出现空指针异常了。
Scanner sc = new Scanner(System.in);
Test_10 [] students = new Test_10[5];
for(int i = 0; i < 5; i++) {String name = sc.next();int num = sc.nextInt();students[i] = new Test_10(name,num);
}
每次赋值之前,都通过构造器创建对象,因此避免了空指针的出现
完整代码
import java.util.Scanner;public class Test_10 {public String name;public int num;public Test_10(String name, int num) {this.name = name;this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);Test_10 [] students = new Test_10[5];for(int i = 0; i < 5; i++) {String name = sc.next();int num = sc.nextInt();students[i] = new Test_10(name,num);}for(Test_10 t : students) {System.out.println(t.name + " " + t.num);}sc.close();}}
JAVA 对象数组和空指针异常相关推荐
- java 对象数组定义_Java对象数组定义与用法详解
本文实例讲述了Java对象数组定义与用法.分享给大家供大家参考,具体如下: 所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据 ...
- json 解析 转java对象数组对象数组对象_json字符串转java对象数组
需要引入json-lib-2.2-jdk15.jar和ezmorph-1.0.6.jar包 String itemStar = request.getParameter("itemStar& ...
- java对象数组和Array List
java对象数组 在preson类的基础上 public static void main (String args){Person[] array = new Person[3];Person on ...
- 登录、注册界面(Java对象数组实现简易版)
注册.登录界面(Java对象数组实现) 此代码为基础简易版,涉及简单的面向对象思想,用到对象数组.成员变量.成员方法.简单封装等. 一.需求 有注册.登录.退出功能,注册的账号存于对象数组中,对象 ...
- Redis存储java对象或者java对象数组
1. 先将java对象或者java对象数组用ObjectMapper转换为json对象 2. 再用jedis对象的put方法,将数据写入Redis数据库
- java对象数组赋值时空指针问题
今天学习java对象数组的时候遇到一个问题,在对数组元素赋值的时候出现空指针报错,经过咨询大佬后问题得到解决,现在记录一下 对于引用类型的数组,默认值为null,相当于里面是[null,null],需 ...
- js解析java对象数组_js接收并转化Java中的数组对象的方法
在做项目时,要向ocx控件下发命令,就要在js中得到java中的对象,然后拼成一种格式,下发下去...当对象是一个时比较简单,但如果对象是一个数组时,就略显麻烦了. 开始我以为有简单的方式,可以直接进 ...
- java对象数组_Java中对象数组的使用方法详解
本文实例讲述了Java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...
- java对象数组元素替换实例
对象数组元素替换实例(普通方法) import java.util.Scanner; //对象数组的元素替换,原理是检索下标用新内容替换掉旧内容 public class Test1 {String ...
最新文章
- centos执行-查看,复制,删除-命令的脚本
- 干货 | 金融级消息队列的演进 — 蚂蚁金服的实践之路
- 深度学习-Tensorflow2.2-RNN循环神经网络{11}-评论分类-25
- qnx 设备驱动开发_QNX驱动开发——应用层与resource manger交互 | 学步园
- 虚拟dom_从0到1实现一个虚拟DOM
- kali linux关闭进程,技术|如何使用 Kali Linux 黑掉 Windows
- matlab中怎么查看变量,Matlab 查看内存中的变量,清空屏幕等命令
- python登录跳转_Python模拟登录和登录跳转的参考示例
- Main线程与main()方法的关系
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_04-freemarker基础-基础语法种类...
- 计算机桌面如何分区,讲解电脑如何分区
- [AI] 如何制作一个低配山寨版贾维斯?-口语人机交互 Spoken Human Robot Interaction
- 2022最新苹果群控同步投屏电脑/手机控制手机功能使用安装
- 第二章 工具变量法(IV)与两阶段最小二乘法
- 一起探索云服务之云数据库
- 杂谈——科比球鞋(Nike)全记录
- Java开发对接招行一网通支付功能的总结
- Python文件操作-写文本文件
- Win7(Win10)+Ubuntu18.04(16.04)双系统安装心得
- zblog-php 火车头采集发布接口,wordpress火车头采集发布模块接口