Java教程 Java语言中的数组

开发 后端
当关联或依赖关系中,出现了1对多的数量关系时,我们必须找一种特殊的对象来帮忙,这种对象能够将我们需要管理的对象包装起来,作为一种数据容器使用,让我们能很容易的把一些对象装进去,很容易的再取出来。数组就是一种解决办法。在本文中,将介绍Java语言中数组的使用。

本文是Java教程之Java数组部分。

Java类之间常见的两种关系,即关联和依赖。如果A关联或依赖B,如果仅从A到B这个方向看,从数量上,可能有1对1和1对多两种可能。面向对象的应用,都是映射现实世界的对象以及对象之间的关系的,仔细考察一下我们身边的情况,对象与对象之间如果存在关联或依赖,其实1对多的关系更为常见。如,一个部门有多个员工,一个学员有多个院系,一个人有多张毕业证书……

比如这样一个例子,学生只能选择一门免费课程学习,如果培训中心加大优惠力度,每个学生最多可以选择3门课程学习,应该如何维护这种关系哪?

我们可能这样尝试:

  1. package com.csst.relation;  
  2.  
  3. public class Student {  
  4.  
  5.        private String name;       
  6.  
  7.        //注意此处修改  
  8.  
  9.        private Course course1,course2,course3;  
  10.  
  11.          
  12.  
  13.        public Student(String name) {  
  14.  
  15.               super();  
  16.  
  17.               this.name = name;  
  18.  
  19.        }  
  20.  
  21. //TBD  
  22.  

但是,接下来,完善chooseCourse,getCourse方法,我们将面临困难。如何得知目前已经选择了几门课程?如何能一次性将学员已经选择的课程查询出来?

也就是说,当关联或依赖关系中,出现了1对多的数量关系时,我们必须找一种特殊的对象来帮忙,这种对象能够将我们需要管理的对象包装起来,作为一种数据容器使用,让我们能很容易的把一些对象装进去,很容易的再取出来。数组就是一种解决办法。在本文中,将介绍Java语言中数组的使用。

1、Java数组的定义和类型

数组是类型相同的元素的集合。也就是说,一个数组中所保存的数据都是一个类型的。首先,记住一句话:Java中的数组是引用类型。也就是说,即使一个数组中存的都是int数据,这个数组的类型也是引用类型。

2、Java数组的声明:

假设要声明一个int型数组,可以有两种声明方式:

  1. int[] x;  
  2.  
  3. int y[]; 

假设要声明一个Course类型数组,可以有两种声明方式:

  1. Course[] courses1;  
  2.  
  3. Course courses2[]; 

可见,Java语言中声明数组有两种方式,一种是[]放在数组元素类型后,一种是[]放到数组引用名字后。建议使用***种方式,即int[],Course[]。因为数组本身是一种数据类型,也就是说,从现在开始,看待int[],Course[],就应该当作一个类型看待,如同看待String一样。

3、Java数组的初始化:

数组可以使用new关键字初始化,使用new初始化时,必须在[]内指定数组的长度。

  1. int[] x=new int[3];  
  2.  
  3. Course[] courses1=new Course[2]; 

使用new初始化数组后,数组内元素会被赋予默认值,如x中的元素均为0,courses1中的元素均为null。

如果在声明的同时,即赋予初值,可以有如下两种方式:

  1. Int[] y ={12,23,45};  
  2. Course courses2=new Course[]{new Course(),new Course()}; 

赋值后,数组y是一个长度为3的数组,courses2是一个长度为2的数组。

4、Java多维数组

例如二维数组的声明,和初始化过程:

  1.    double[][] d=new double[3][];  
  2.  
  3. d[0]=new double[4];  
  4.  
  5. d[1]=new double[5];  
  6.  
  7. d[2]=new double[3];  
  8.  
  9.  
  10.  
  11. d[0][0]=10;  
  12.  
  13. d[0][1]=100

以上代码,创建了一个二维数组,该数组包含3个一维数组,这3个一维数组长度分别为4,5,3。按照这样的语法和逻辑,还可以声明三维,四维等多维数组。

5、Java数组的长度

数组的长度都在初始化时被指定,一旦指定,再也不能改变,也就是说,数组的长度是不可变的。

如:

  1. int[] x=new int[3];  
  2.  
  3. System.out.println(x.length);//输出3 

注意,数组的长度使用length属性取出,而不是length()方法。

6、对数组的遍历方法

方法一:使用长度控制循环

  1. int[] x=new int[3];  
  2.  
  3. for(int i=0;i<x.length;i++){  
  4.  
  5.                System.out.println(x[0]);  
  6.  
  7.         } 

方法二:增强for循环

  1. int[] x=new int[3];  
  2.  
  3. for(int a:x){  
  4.  
  5.                System.out.println(a);  
  6.  
  7.         }       

接下来,对于上面学员选择免费课程的程序进行修改。

  1. package com.csst.relation;   
  2.  
  3. public class Student {  
  4.  
  5.        private String name;  
  6.  
  7.          
  8.  
  9.        //1.关联关系:Student关联Course(1对多关系)  
  10.  
  11.        private Course[] courses=new Course[3];  
  12.  
  13.        private int index;  
  14.  
  15.          
  16.  
  17.        public Student(String name) {  
  18.  
  19.               super();  
  20.  
  21.               this.name = name;  
  22.  
  23.        }         
  24.  
  25.        //2.依赖关系:Student依赖Course  
  26.  
  27.        public void chooseCourse(Course course){  
  28.  
  29.               if(index<3){  
  30.  
  31.                      this.courses[index]=course;  
  32.  
  33.                      index++;  
  34.  
  35.               }else{  
  36.  
  37.                      System.out.println("最多选3门课程。");  
  38.  
  39.               }  
  40.  
  41.        }  
  42.  
  43.          
  44.  
  45.        public Course[] getCourse(){  
  46.  
  47.               return this.courses;  
  48.  
  49.        }  
  50.  

在处理1对多关系时,数组是常用的解决方案。数组的优点是遍历比较容易,缺点是长度一旦确定,就无法改变。如果对象间的1:n关系,n的变化范围较大,就无法确定数组的长度。与数组类似,比数组更为灵活的解决方案,是集合,在以后的文章中会介绍。

 

 

【编辑推荐】

  1. Java教程 Java类的组成
  2. Java教程 Java类中的包
  3. Java教程 Java语言的访问权限修饰符
  4. Java教程 Java类中的各种数据
  5. Java教程 Java语言中的数据类型及String类
责任编辑:仲衡 来源: taomoon719的专栏
相关推荐

2009-06-12 14:18:20

构造方法Java语言Java教程

2009-06-12 14:46:05

static修饰符Java教程

2009-06-12 13:48:13

数据类型string类Java教程

2023-12-21 11:46:48

C语言柔性数组开发

2021-07-13 06:44:04

Go语言数组

2009-06-16 11:44:00

Java IO系统

2011-06-09 11:23:18

JAVAIO

2011-06-03 13:15:01

JAVAEJB

2021-01-21 09:23:35

Java语言

2011-03-29 10:41:51

Java线程安全

2010-03-17 18:38:53

Java编程语言

2011-07-10 14:28:49

JAVAIO

2010-03-15 18:25:27

Java编程语言

2009-06-29 12:58:47

This关键字java

2009-04-30 15:15:01

Java抽象类接口

2011-07-21 08:43:38

2015-04-15 14:41:40

c语言数组名a&a详细介绍

2022-02-21 09:33:31

接口继承Java语言

2009-06-18 12:37:26

java编程语言

2024-05-17 08:47:33

数组切片元素
点赞
收藏

51CTO技术栈公众号