对象数组同基本类型数组相同

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 对象数组和空指针异常相关推荐

  1. java 对象数组定义_Java对象数组定义与用法详解

    本文实例讲述了Java对象数组定义与用法.分享给大家供大家参考,具体如下: 所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据 ...

  2. json 解析 转java对象数组对象数组对象_json字符串转java对象数组

    需要引入json-lib-2.2-jdk15.jar和ezmorph-1.0.6.jar包 String itemStar = request.getParameter("itemStar& ...

  3. java对象数组和Array List

    java对象数组 在preson类的基础上 public static void main (String args){Person[] array = new Person[3];Person on ...

  4. 登录、注册界面(Java对象数组实现简易版)

    注册.登录界面(Java对象数组实现) 此代码为基础简易版,涉及简单的面向对象思想,用到对象数组.成员变量.成员方法.简单封装等. 一.需求   有注册.登录.退出功能,注册的账号存于对象数组中,对象 ...

  5. Redis存储java对象或者java对象数组

    1. 先将java对象或者java对象数组用ObjectMapper转换为json对象 2. 再用jedis对象的put方法,将数据写入Redis数据库

  6. java对象数组赋值时空指针问题

    今天学习java对象数组的时候遇到一个问题,在对数组元素赋值的时候出现空指针报错,经过咨询大佬后问题得到解决,现在记录一下 对于引用类型的数组,默认值为null,相当于里面是[null,null],需 ...

  7. js解析java对象数组_js接收并转化Java中的数组对象的方法

    在做项目时,要向ocx控件下发命令,就要在js中得到java中的对象,然后拼成一种格式,下发下去...当对象是一个时比较简单,但如果对象是一个数组时,就略显麻烦了. 开始我以为有简单的方式,可以直接进 ...

  8. java对象数组_Java中对象数组的使用方法详解

    本文实例讲述了Java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...

  9. java对象数组元素替换实例

    对象数组元素替换实例(普通方法) import java.util.Scanner; //对象数组的元素替换,原理是检索下标用新内容替换掉旧内容 public class Test1 {String ...

最新文章

  1. centos执行-查看,复制,删除-命令的脚本
  2. 干货 | 金融级消息队列的演进 — 蚂蚁金服的实践之路
  3. 深度学习-Tensorflow2.2-RNN循环神经网络{11}-评论分类-25
  4. qnx 设备驱动开发_QNX驱动开发——应用层与resource manger交互 | 学步园
  5. 虚拟dom_从0到1实现一个虚拟DOM
  6. kali linux关闭进程,技术|如何使用 Kali Linux 黑掉 Windows
  7. matlab中怎么查看变量,Matlab 查看内存中的变量,清空屏幕等命令
  8. python登录跳转_Python模拟登录和登录跳转的参考示例
  9. Main线程与main()方法的关系
  10. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_04-freemarker基础-基础语法种类...
  11. 计算机桌面如何分区,讲解电脑如何分区
  12. [AI] 如何制作一个低配山寨版贾维斯?-口语人机交互 Spoken Human Robot Interaction
  13. 2022最新苹果群控同步投屏电脑/手机控制手机功能使用安装
  14. 第二章 工具变量法(IV)与两阶段最小二乘法
  15. 一起探索云服务之云数据库
  16. 杂谈——科比球鞋(Nike)全记录
  17. Java开发对接招行一网通支付功能的总结
  18. Python文件操作-写文本文件
  19. Win7(Win10)+Ubuntu18.04(16.04)双系统安装心得
  20. zblog-php 火车头采集发布接口,wordpress火车头采集发布模块接口

热门文章

  1. strcmp(),头文件,返回值
  2. 6000级石阶见证绝世爱情[转]
  3. RT-Thread MSH_CMD_EXPORT分析
  4. 【Web技术】913- 谈谈你对前端路由的理解
  5. 我为什么要创建帮创业者找合伙人的缘创派(ycpai.com)?
  6. PyVISA使用——用python控制TEK示波器源码实现
  7. beam-search及其torch实现
  8. 向kaggle中添加包
  9. Android内存泄漏的分析和避免
  10. mysql navicat导入bcp_SQL Server数据导入导出工具BCP详解