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)
上一篇 2022年7月16日 上午8:00
下一篇 2022年7月16日 上午8:16


相关推荐

  • 全网最省心!扣子版OpenClaw保姆级部署与进阶玩法

    全网最省心!扣子版OpenClaw保姆级部署与进阶玩法

    2026年3月13日
    1
  • 作为一个程序员,什么是脚本。必须要理解「建议收藏」

    作为一个程序员,什么是脚本。必须要理解「建议收藏」Javascript是一门动态类型、面向对象的脚本语言。对脚本进行一个感性的认识。就是一个跟计算机执行的文本。理解脚本如果你打开一本JavaScript教程,那么很可能在第一章就看到这句话

    2022年8月2日
    6
  • 最好用的免费音乐播放器_最好用的免费音乐播放器

    最好用的免费音乐播放器_最好用的免费音乐播放器不知道大家在工作的时候,是不是跟我一样,喜欢听着自己熟悉的旋律,心情也会很好。但是,原来的很多经典歌曲,要么改收费一首歌几块钱、要么是翻唱的,听起来也没有原版好,对于我们这些只是偶尔听听歌的、写写东西的人来说,的确有点不方便。今天,小莫为大家挑选了四个,截止到目前还能正常使用,并且功能十分强大的音乐播放器,歌曲都是免费的,建议低调收藏。1、音乐社一款很简洁的音乐播放器,涵盖了主流播…

    2022年4月19日
    47
  • 看完了aspnetmvc nerdinner项目

    看完了aspnetmvc nerdinner项目这几天一直在看aspnetmvc-nerdinner这本书中的Nerdinner代码编写的全过程。其实觉得用最原始的办法:动手敲代码带给我们的好处比单纯的看然后Copy代码再运行要好的多,最起码加深了我们的记忆。前段时间看了ASP.NET网站上关于ASP.NETMVC编程的培训文章,觉得MVC挺强大的,然后就试着自己做了一个小项目,可是在做的过程中,很多东西确实见多人家怎么做,也知道大概…

    2026年4月18日
    5
  • java2实用教程第六版习题答案

    java2实用教程第六版习题答案java2 实用教程第六版习题答案第一章一 判断题 二 单选题 BDACC 三 挑错题 DAB 第二题在书上无错误 但在习题库中 public 为 publlic 习题库中选 A 四 阅读程序题 1 Speak java 2 2 个 Speak classXiti4 class 3 Xiti4 4 在类 Speak 中找不到类方法之后的章节慢慢跟新 如果有错误希望能指出 我及时改正

    2026年3月20日
    2
  • golang永久激活_在线激活

    (golang永久激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月31日
    365

发表回复

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

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