领略Java艺术之万物皆“数组” | 带你学《Java面向对象编程》之二十一

简介: 数组这一概念可大可小,只要类型相同、数量比1多,都可以叫数组。本节将为读者讲解含可变参数的方法与对象数组相关内容。

上一篇:欲善其事,先利其器-数组类库 | 带你学《Java面向对象编程》之二十
【本节目标】
通过阅读本节内容,你将接触到接收可变参数的方法,并拓宽思维,了解到万物皆可成为数组的内在含义,学会创建对象数组。

方法可变参数

如果现在要求定义一个方法,这个方法可以实现任意多个整型数据的相加处理。这样的情况下最早的时候只能通过数组进行处理。
范例:传统实现

class ArrayUtil {
   public static int sum(int [] data) {
       int sum = 0 ;
       for(int temp : data) {
          sum += temp ;
       }
       return sum ;
   }
}
public class ArrayDemo {
     public static void main (String args[ ]) {
        System.out.println(ArrayUtil.sum(new int [] {1,2,3})) ;
     }    
}

image.png
图一 执行结果一

虽然以上的程序可以实现任意多个数字的参数内容传递,但是与实际的要求并不符合,实际要求的是可以传递多个参数,而不是一个数组。从JDK1.5开始为了方便开发者进行可变参数的定义,对于方法的参数提供有新的支持了。
范例:采用可变参数

class ArrayUtil {
   public static int sum(int … data) {     //变种数组
       int sum = 0 ;
       for(int temp : data) {
          sum += temp ;
       }
       return sum ;
   }
}
public class ArrayDemo {
     public static void main (String args[ ]) {
        System.out.println(ArrayUtil.sum(1,2,3)) ;
        System.out.println(ArrayUtil.sum(new int [] {1,2,3})) ;
     }    
}

image.png
图二 执行结果二

可变参数的最大作用在于,在以后进行一些程序类设计或者开发者调用的时候,利用此种形式就可以避免数组的传递操作了。可变参数的本质需要清楚的是:依然属于数组。

对象数组

在之前所接触到的都是基本数据类型定义的数组,但是在Java程序本身各种数据类型都可以成为数组类型,所以类也可以成为数组类型,而这样的数组就称为对象数组。对象数组的定义格式如下:

  • 动态初始化:类 对象数组名称 [] = new 类 [长度] ,每一个元素的内容都是null ;

  • 静态初始化:类 对象数组名称 [] =new 类 [] {实例化对象,实例化对象……} ;

范例:使用动态初始化定义对象数组

class Person {
   private String name ;
   private int age ;
   public Person(String name ,int age) {
       this.name = name ;
       this.age = age ;
   }
   public String getInfo() {
       return “姓名:” + this.name + “、年龄:” + this.age ;
   }
//setter、getter略
}
public class ArrayDemo {
   public static void main (String args[ ]) {
       Person per =new Person[3] ;    //对象数组
       per[0] = new Person(“张三”,20) ;
       per[1] = new Person(“李四”,20) ;
       per[2] = new Person(“王五”,20) ;
       for (int x = 0 ;x < per.length ; x ++) {
           System.out.println(per[x].getInfo()) ;
        }
    }    
}

image.png
图三 执行结果三

范例:对象数组的静态初始化

class Person {
   private String name ;
   private int age ;
   public Person(String name ,int age) {
      this.name = name ;
      this.age = age ;
   }
   public String getInfo() {
       return “姓名:” + this.name + “、年龄:” + this.age ;
   }
//setter、getter略
}
public class ArrayDemo {
     public static void main (String args[ ]) {
        Person per =new Person[] {
            new Person(“张三”,20) ;
            new Person(“李四”,20) ;
            new Person(“王五”,20) ;
        } ;    //对象数组
        for (int x = 0 ;x < per.length ; x ++) {
           System.out.println(per[x].getInfo()) ;
        }
    }    
}

image.png
图四 执行结果四

对于对象数组而言,本身只是更换了一种所谓数组定义的类型。但是这种情况下,内存图就比较麻烦了。
观察对象数组内存图:

image.png
图五 对象数组内存图

所有的开发都不可能离开对象数组,但是通过一系列的分析也应该知道一个数组中的最大缺陷:长度是固定的。优势:数据线性保存,根据索引访问,速度较快(时间复杂度为“1”)。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:一起来看引用与现实的邂逅 | 带你学《Java面向对象编程》之二十二
更多Java面向对象编程文章查看此处

相关文章
|
29天前
|
Java 开发者
Java 面向对象编程
总之,Java 的面向对象编程为开发者提供了一种有效的编程范式,帮助他们构建出高质量、可维护的软件系统。理解和掌握面向对象的概念和原则是成为优秀 Java 开发者的重要基础。
46 3
|
2月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
33 4
|
2月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
40 2
|
2月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
95 2
|
2月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
55 9
|
2月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
26 3
|
2月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
31 6
|
2月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
34 1
|
2月前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
18 1
|
2月前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
129 9
下一篇
DataWorks