Java中的对象数组「建议收藏」

Java中的对象数组「建议收藏」Java对象数组在创建后,基本数据类型数组可以直接对数组元素赋值、引用等操作;而自定义对象数组,需要对数组中的每个对象元素独立进行创建,然后才可以对其赋值、引用等操作,如果没有单独对每个对象元素创建,会导致空指针异常1.基本数据类型数组数组都要先声明、再创建后使用。基本数据类型数组的声明有以下几种格式(以int类型为例):①int[]array;②int[]array=newint;③in…

大家好,又见面了,我是你们的朋友全栈君。

Java对象数组

在创建后,基本数据类型数组可以直接对数组元素赋值、引用等操作;而自定义对象数组,需要对数组中的每个对象元素独立进行创建,然后才可以对其赋值、引用等操作,如果没有单独对每个对象元素创建,会导致空指针异常

1.基本数据类型数组

数组都要先声明、再创建后使用。基本数据类型数组的声明有以下几种格式(以int类型为例):①int[]array;②int[]array=new int;③int[]array={1,2,3};int[]array=newint[]{1,2,3};以上几种格式对数组内容操作,分为对数组的动态初始化和静态初始化两种形式。

2.自定义对象数组

自定义对象数组,它们由同一个类的多个具体实例有序组成。我们熟悉的主方法中的string args接收初始化参数时,参数就是一个典型的对象数组案例。由于其每个元素都是引用数据类型,数组在创建后,必须对每个对象分别进行实例化创建。
以自定义学生类student为例

public class Student
  {
      // 成员变量
      private String name;
      private int age;
  
      // 构造方法
      public Student()
      {
         super();
     }
 
     public Student(String name, int age) 
     {
         super();
         this.name = name;
         this.age = age;
     }
 
     // 成员方法
     // getXxx()/setXxx()
     public String getName() 
     {
         return name;
     }
 
     public void setName(String name) 
     {
         this.name = name;
     }
 
     public int getAge() 
     {
         return age;
     }
 
     public void setAge(int age) 
     {
         this.age = age;
     }
 
     @Override
     public String toString() 
     {
         return "Student [name=" + name + ", age=" + age + "]";
     }
 }

 public class Practice 
 {
     public static void main(String[] args)
   {
        // 创建学生数组(对象数组)。
        Student[] students = new Student[5];
         // for (int x = 0; x < students.length; x++) 
        // {
         //         System.out.println(students[x]);
         // }
       //     System.out.println("---------------------");

       // 创建5个学生对象,并赋值。
	 	 Student s1 = new Student("小一", 27);
	     Student s2 = new Student("小二", 30);
	     Student s3 = new Student("小四", 30);
	     Student s4 = new Student("小五", 12);
	     Student s5 = new Student("小六", 35);

       // 将对象放到数组中。
       students[0] = s1;
       students[1] = s2;
       students[2] = s3;
       students[3] = s4;
       students[4] = s5;
      // 遍历
       for (int x = 0; x < students.length; x++) 
        {
         //System.out.println(students[x]);
            Student s = students[x];
           System.out.println(s.getName()+"---"+s.getAge());
        }
     }
 }

注意:对象数组在经过创建后只建立了栈内存的地址空间,因此在没有对每个数组中的对象创建时输出全部为null,只有经过每个对象实例的独立地开辟堆内存空间,才能正确初始化对象数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160417.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sfdwfwefw

    sfdwfwefw

    2021年12月17日
    36
  • LaTeX 参考文献_论文参考文献外文文献格式

    LaTeX 参考文献_论文参考文献外文文献格式这篇好棒,但是代码写在什么位置看下一篇(26条消息)Latex中如何制作参考文献_bluenight专栏-CSDN博客_latex中参考文献https://blog.csdn.net/chl033/article/details/5927207这篇有代码位置(26条消息)Latex引用bib文件步骤_一个人漫步走-CSDN博客【Latex】如何同时引用多篇参考文献_一千零一夜的博客-CSDN博客_latex怎么连续引用多个文献这篇也可以,写了几个细节:1.cite包一定要导入2….

    2025年10月10日
    3
  • IDEA这些既好用又好玩的三十多个宝贝插件你还不知道吗?「建议收藏」

    小编整理的一些好用的有趣的插件如果有什么问题,欢迎大家评论,群文件也有这些IDEA插件QQ交流群:99979568IDEA下载插件教程如果无法在线下载插件,文末有我下载好的安装包,以及安装包安装的教程强烈推荐的插件PresentationAssistant快捷键展示Codota代码智能提示AlibabaJavaCodeGuidelines—阿里巴巴Java代码规范Translation-必备的翻译插件SequenceDiagra.

    2022年4月8日
    48
  • [转]搭建Windows下Java Web开发环境

    [转]搭建Windows下Java Web开发环境

    2021年8月16日
    55
  • 权限设计-系统登录用户权限设计[通俗易懂]

    权限设计-系统登录用户权限设计[通俗易懂]需求分析—场景假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号。有如下几个要求:1. 权限等级不同:公司领导登录后可查看所有员工信息,部门领导登录后只可查看本部门员工的信息,员工登录后只可查看自己的信息;2.访问权限不同:如公司领导登录后,可查看员工薪水分布界面,而员工则不能看到;3.操作权限不同:如系统管理员可以在信息发布界面进行增删改查发布信息

    2022年7月13日
    18
  • java如何获取随机数(两种方式)

    java如何获取随机数(两种方式)在小的知识,都有深挖之价值。很久没有生产随机数,竟然忘了!我明明记得我做过关于随机数产生的总结,but,我翻遍了整个笔记本,就是没找到。即便我知道笔记就在某一个角落;我还是放弃了查找笔记,跑去Google了,所以我决定建立电子笔记,记录那些小知识点。//获取100以内的随机数packagecom.isea.java;importjava.util.Random;public……

    2022年7月26日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号