Java数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

其中,数组名是已声明的数组变量,类型是数组元 素的类型,数组大小是数组的长度,可以为整型常 量或变量。通过数组运算符new为数组分配指定数 组大小的给定个数的空间。 若数组未声明,则可在数组声明的同时用new运算 符为数组分配空间:
类型 数组名[] = new 类型[数组大小];
3.复合类型数组元素的动态空间分配和初始化 一般情况下,复合类型的数组需要进一步对数组元 素用new运算符分配空间并初始化操作。设已声明一 个复合类型的数组:
例如,下面是一个图形界面应用程序中所用按钮数 组的定义:
Button btn[]; btn = new Button[2]; btn[0] = new Button("确定"); btn[1] = new Button("退出");
当然,在比较简单的情况下,上述操作可简化为:
Button btn[] = {new Button("确定"),new Button("退出")};
public class ObjectArray { public static void main(String args[]) { Object a[] = new wk.baidu.combject[5];
a[0] = new Integer(3); a[1] = new String("张三"); a[2] = new Boolean("true"); a[3] = new Character('F'); a[4] = new Double(1345.68); System.out.println("编号 姓名 已婚 性别 工资"); for(Object s:a)System.out.print(" " + s + " "); System.out.println(); } }
public class Score{ public static void main(String args[]){ int a[] = {90,87,67,83,88,94,76,98,95,72},i,sum = 0; double ave; for(i = 0;i < a.length;i ++) sum += a[i]; ave = sum/10.0; System.out.println("Average = " + ave); for(int s:a)System.out.printf("%4d",s); System.out.println(); for(int s:a)System.out.printf(("%4d",(s-(int)ave)); } }
与其他高级语言不同,Java在数组声明时并不为数 组分配存储空间,因此,在声明的[]中不能指出数组 中元素的个数(数组长度),而且对于如上声明的 数组是不能访问它的任何元素的,必须经过初始化、 分配存储空间创建数组后,才能访问数组的元素。 当仅有数组声明,而未分配存储空间时,数组变量 中只是一个值为null的空引用(指针)。 2.一维数组的空间分配 为数组分配空间有两种方法:数组初始化和使用new 运算符。为数组分配空间后,数组变量中存储为数 组存储空间的引用地址。
程序运行结果如下:
编号 姓名 已婚 性别 工资 3 张三 true F 1345.68
当数组创建后,数组名中就存储为数组存储区的首 地址(即一种引用),可以将此地址赋值给另一同 类的数组,即数组的引用。 【例4】数组的赋值和引用。
public class RefDemo { public static void main(String[] args){ int[] a = { 1,2,3 },b; b = a; for (int s:b)System.out.print(s + " "); System.out.println(); } }
有时候需要将不同基本类型的数据组织到一个 数组中,在Java这种面向对象的语言中,实 现起来是很容易的。在第2章中已经介绍过与 基本类型相应的包装类,在Java语言中,所 有的类都是类Object的子类,因此可以定义类 Object的数组,也就可以将不同基本类型的数 据存入到一个数组。 【例3】类Object的数组。
教学目标: 教学目标: 掌握数组的基本概念; 掌握数组的基本概念;掌握数组的 使用方法; 使用方法;掌握数组与循环语句的综合 应用。 应用。 教学重点: 教学重点: 数组的基本概念;数组的使用方法 数组的基本概念 数组的使用方法 教学难点: 教学难点: 数组的创建;综合应用。 数组的创建;综合应用。
从上述例子可以看到,一维数组的初始化即在前面 数组声明的基础上在大括号中给出数组元素的初值, 系统将自动按照所给初值的个数计算出数组的长度 并分配相应的存储空间。
(2)使用new运算符 通过使用new运算符可为数组分配存储空间和指定 初值。若数组已经声明,为已声明数组分配空间的 一般形式如下:
数组名= new 类型[数组大小];
(1)数组初始化 数组初始化是指在声明数组的同时指定数组元素的 初始值。一维数组初始化的形式如下:
类型 数组名[] = {元素1[,元素2…]}
其中元素为指定类型的初始值。基本类型和字符串 类型等可以用这种方式创建数组空间。例如:
int intArray[] = {1,2,3,4,5}; double decArray[] = {1.1,2.2,3.3}; String strArray[] = {"Java","BASIC","FORTRAN"};
Java系统将根据初始化时给出的初始值的个数自动 计算出数组每一维的大小。在这个例子中,二维数组 intArray由三个一维数组组成,这三个一维数组的元 素个数分别为2、2、3。在Java语言中,由于把二维 数组看作是数组的数组,数组空间不一定连续分配, 所以不要求二维数组每一维的大小相同。
二、 二维数组的引用
大多数情况是引用二维数组的元素。对二维数组中 的每个元素,引用方式为:
数组名[下标1][下标2]
其中,下标1和下标2可用类型同一维数组,如c[2][3] 等。同样,每一维的下标都从0开始。 对二维数组元素的逐个处理,一般用嵌套循环结构 的程序。 【例5】矩阵转置。矩阵是排列成若干行若干列的数据 表,转置是将数据表的行列互换。即第一行变成第 一列、第二行变成第二列等等。
二、一维数组的引用
一维数组的引用分为数组元素的引用和数组的引用, 大部分时候都是数组元素的引用。一维数组元素的 引用方式为:
数组名[下标]
其 中 : 下 标 是 int 类 型 的 , 也 可 以 是 byte、short、 char等类型,但不允许为long类型。下标的取值从0 开始,直到数组的长度减1。一维数组元素的引用与 同类型的变量相同,每一个数组元素都可以用在同 类变量被使用的地方。对前面建立的数组变量 intArray,有5个数组元素,通过使用不同的下标来 引 用 不 同 的 数 组 元 素 intArray[0]、intArray[1]、...、 intArray[4]。
一、一维数组的定义
数组的定义包括数组声明和为数组分配空间、初始化 (创建数组)等内容。 使用数组一般要经历数组定义、分配内存及赋值三个 数组定义、 数组定义 步骤。 步骤 1.一维数组的声明
声明一个一维数组的一般形式为:
类型 数组名[ ]; 或 类型[ ] 数组名;
其中,类型可以是Java中任意的基本数据类 型或引用类型,数组名是一个合法的标识符, [ ]指明该变量是一个数组变量。例如:
程序运行结果如下:
Average = 85.0 90 87 67 83 88 94 76 98 95 72 5 2 -18 -2 3 9 -9 13 10 -13
在上述程序中,对数组的元素逐个访问使用了foreach格式的循环语句。注意语句中的变量s应与数组 的类型相同,它代表数组元素,而不是数组的下标。 【例2】输入10个整数,按相反的顺序输出它们。
类型 数组名[];
对数组arrayName 的动态空间分配步骤如下: (1)为数组分配每个元素的引用空间:
数组名 = new 类型 [数组大小];
(2)为每个数组元素分配空间:
数组名[0] = new 类型(参数表);

数组名[数组大小-1] = new 类型(参数表);
其中参数表用于数组元素初值的指定。
int intArray[ ]; (或 int[ ] intArray;) double decArray[ ];(或 double[ ] decArray;) String strArray[ ]; (或 String[ ] strArray;) Button btn[ ]; (或 Button[ ] btn;)
public class Matrixt{ public static void main(String args[]){ int a[][] = {{1,2,3,4},{2,3,4,5},{3,4,5,6}}; int b[][] = new int [4][3];
int i,j; for(i = 0;i < 3;i ++) for(j = 0;j < 4;j ++)b[j][i] = a[i][j]; for(i = 0;i < 4;i ++){ for(int s:b[i]) System.out.print(s + " "); System.out.println(); } } }
import java.util.Scanner; public class NumberInput { public static void main(String args[]) {
Scanner sc = new Scanner(System.in); int i,a[] = new int [10]; for(i = 0;i < a.length;i ++){ System.out.print("请输入第"+(i+1)+"个数:"); a[i] = sc.nextInt(); } for(i = a.length - 1;i >= 0;i --) System.out.println("反序 "+(a.length-i) + ":" + a[i]); } }
类型 数组名[ ][ ];
或 类型[ ][ ] 数组名; 或 类型[ ] 数组名[ ];
数组声明中的类型,可以是简单类型,也可以是复 合类型。
2.二维数组的空间分配 (1)二维数组的初始化 二维数组的初始化也是在声明数组的同时就为数组 元素指定初值。例如:
int intArray[][] = {{1,2},{3,4},{5,6,7}};
数组的概念 数组是一种最简单的复合数据类型。数组是一组 同类型有序数据的集合,数组中的一个数据成员称 为数组元素,数组元素可以用一个统一的数组名和 下标(序号)来唯一确定。根据数组下标是一个还 是多个,数组分为一维数组和多维数组。
(一) 一维数组
一维数组中的各个元素排成一行,通过数组名和一个 下标就能访问一维数组中的元素。
(二) 多维数组
Java也支持多维数组。在Java语言中,多维数组被 看作数组的数组。例如二维数组为一个特殊的一维 数组,其每个元素又是一个一维数组。下面的讨论 主要针对二维数组,更高维数的数组情况类似于二 维数组。 使用二维数组可方便地处理表格形式的数据。
一、 二维数组的定义
二维数组的定义与一维数组类似,包括数组声明、 为数组和数组元素分配空间、初始化等内容。 1.二维数组的声明 声明二维数组的一般形式为:
Java对数组元素要进行越界检查以保证安全性。若 数组元素下标小于0、大于或等于数组长度将产生下 面的异常:
ArrayIndexOutOfBoundsException。
Java语言对于每个数组都有一个指明数组长度的属 性 length, 它 与 数 组 的 类 型 无 关 。 例 如 intArray.length等。 对一维数组元素的逐个处理,一般用循环结构的程 序。 【例1】设数组a中存有10个学生某门课程的成绩, 输出这10个学生的成绩与平均成绩的差(低于平均 成绩用负数表示)。
相关文档
最新文档