Java程序设计-4-数组
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 数组
1
学习目标
理解数组的作用 掌握数组的声明和初始化特点 能够通过下标访问数组中的单个元素 如何利用JDK JDK提供的数组操作方法 如何利用JDK提供的数组操作方法 理解程序接收参数的过程,灵活运用main main的参 理解程序接收参数的过程,灵活运用main的参 数实现和程序交互 掌握多维数组的声明和应用
20
课堂练习
声明并创建一个如下数组。 声明并创建一个如下数组。
包含3 每行分别包含不同数目元素, 包含3行,每行分别包含不同数目元素,元素 数依次为 5,4,6
编写一个程序, 编写一个程序,逐个输出该数组的每个元素的 默认初始值。 默认初始值。
21
操作数组-复制、 4.4 操作数组-复制、排序和查找
15
4.1.5使用增强型循环访问数组元素 4.1.5使用增强型循环访问数组元素
for(目标数组元素的类型 变量名 目标数组名 目标数组元素的类型 变量名:目标数组名 目标数组名) int[] score = new int[5]; …… for (int x : score) { System.out.print(x+","); }
14
说出下面数组第3 说出下面数组第3个元素的值
int[] a = {1,3,6,7,8}; boolean[] b = new boolean[10]; float[] f={1.4f,5.6f,7.0f,2.5f,3.6f}; double[] d=new double[10]; long[] l;
上述数组的声明也可以修改为: 上述数组的声明也可以修改为:
int[][] twoDim =
18
new int[4][5];
2.不规则的多维数组 2.不规则的多维数组
int[][] twoDim = new int[4][]; twoDim[0] = new int [2]; twoDim[1] = new int [4]; twoDim[2] = new int [6]; twoDim[3] = new int [8];
数组声明后并不是就可以直接使用了, 数组声明后并不是就可以直接使用了,要想使用必须 要实际创建数组,为它分配实际的存储空间, 要实际创建数组,为它分配实际的存储空间,然后才 能存储元素。 能存储元素。
s = new char [20]; ] p = new Point [100]; ]
也可在运行时 用变量表示数组的大小。 也可在运行时,用变量表示数组的大小。 运行
4.1.4 访问数组
public class ArrayAccessDemo { public static void main(String[] args) { Байду номын сангаасnt[] a={1,3,7,2,6,5}; for(int i=0;i<a.length;i++){ System.out.println(第"+i+"个元素值为"+a[i]); } } }
复制:在数组内查找一个具体的值, 复制:在数组内查找一个具体的值,或者将一 个数组复制到另一个数组等。 个数组复制到另一个数组等。
System类提供的方法-arraycopy(), System类提供的方法-arraycopy(),程序 类提供的方法
在上述char数组s的例子中,每个值都被初始化为0 在上述char数组s的例子中,每个值都被初始化为0 char数组 u0000-null)字符 字符; (\u0000-null)字符; 数值类型的数组元素默认值为0 数值类型的数组元素默认值为0 boolean类型的数组元素默认值为 类型的数组元素默认值为false boolean类型的数组元素默认值为false 对象类型的数组元素默认值为null 对象类型的数组元素默认值为null
16
main方法中的参数 4.2 main方法中的参数
命令行的参数
main方法声明中的参数类型是一个字符串数组 main方法声明中的参数类型是一个字符串数组 //程序4-2:运行时参数的应用 运行时, 运行时,存放接收的命令行参数 public class CommandParameters { Java程序将接收的第一个参数存放在下标为 程序将接收的第一个参数存放在下标为0 Java程序将接收的第一个参数存放在下标为0 public static void main(String[] args) { 的位置,第二个参数存放在下标为1的位置, 的位置,第二个参数存放在下标为1的位置, for(int i=0;i<args.length;i++){ 其它的以此类推。 其它的以此类推。 System.out.printf("第%d个输入的参数是%s\n", i,args[i]);
int[] a; int len=10; a=new int[len];
注意:数组的大小一旦指定,就不可更改。 注意:数组的大小一旦指定,就不可更改。
5
4.1.3 初始化数组
初始化解决了当数组空间被分配时, 初始化解决了当数组空间被分配时,如何填充空间的问 题,而且预防了没有赋值就访问数组元素导致意外的情 况。 1.当创建一个数组时 每个元素都将被默认初始化。 当创建一个数组时, 1.当创建一个数组时,每个元素都将被默认初始化。
其结果与下列代码等同: 其结果与下列代码等同:
String names[] ; names = new String [3]; Georgianna”; names [0] = “Georgianna ; Georgianna names [1] = “Jen ; Jen”; Jen Simon”; names [2] = “Simon ; Simon 7
11
课堂练习
写出下面程序的运行结果
class Happy { public static void main(String args[]) { int index=1; int a[] =new int[3]; int bas =a[index]; int baz =bas + index System.out.println( a[baz] ); } }
6
Java编程语言允许使用下列形式快速创建数组 编程语言允许使用下列形式快速创建数组, 2. Java编程语言允许使用下列形式快速创建数组,并完 成初始化任务: 成初始化任务:
String names[] = { “Georgianna , Georgianna”, Georgianna “Jen , Jen”, Jen “Simon Simon” Simon };
12
课堂练习(cont.) 课堂练习(cont.)
判断正确
数组中的每个元素都是同样的类型 数组的大小在声明之后就是固定的了 数组的大小在创建后确定 数组的元素必须是基本类型的
13
课堂练习(cont.) 课堂练习(cont.)
下面哪一个语句是有效的数组声明? 下面哪一个语句是有效的数组声明?
int i= new int(30); double d[] = new double[30]; Point[] p= new Point(1..30); int i[] =(3,4,5,7); char[] c = new char(); float[] f={1.0f,1.5f,4.6f}; double d[] = new float[30];
8
访问数组- 4.1.4 访问数组-cont.
注意: 注意:
1.在Java编程语言中,所有数组的下标都从0 1.在Java编程语言中,所有数组的下标都从0开 编程语言中 访问数组元素可以通过下标进行, a[5]或 始。访问数组元素可以通过下标进行,如a[5]或 a[i]. 者a[i]. 2.一个数组中元素的数量被作为具有length属 一个数组中元素的数量被作为具有length 2.一个数组中元素的数量被作为具有length属 性的部分而被数组对象存储; 这个值被用来检查 性的部分而被数组对象存储; 所有运行时访问的界限。 所有运行时访问的界限。如果发生了一个越出界 限的访问,那么运行时的报错(异常) 限的访问,那么运行时的报错(异常)也就出现 了.
} } }
17
4.3 多维数组
1多维数组
Java编程语言没有像其它语言那样提供多维数 Java编程语言没有像其它语言那样提供多维数 组,因为一个数组可被声明为具有任何基础类 所以你可以创建数组的数组( 型,所以你可以创建数组的数组(和数组的数组 的数组,等等) 的数组,等等)。 [4][] []; int[][] twoDim = new int [4][]; twoDim[0] = new int[5]; twoDim[1] = new int[5]; twoDim[2] = new int[5]; twoDim[3] = new int[5];
3
4.1.1 数组的声明
传统方式
int[] score; char s[ ]; [ Point p[ ],q[]; // Point是一个类类型, Point是一个类类型 是一个类类型, [ 此处声明了两个数组
现代方式
char[ ] s; [ Point[ ] p, q; [
4
4.1.2 创建数组
在数组p的例子中, 每个值都被初始化为null null, 在数组p的例子中, 每个值都被初始化为null,表明它还未引用一 Point对象 对象。 Point()之后 之后, 个Point对象。在经过赋值 p[0] = new Point()之后,数组的第一 个元素引用为实际Point对象。 Point对象 个元素引用为实际Point对象。
9
访问数组- 4.1.4 访问数组-cont.
存储元素到数组
int[] a=new int[10]; a[0]=10; a[5]=2; a[7]=8;
10
小结: 小结:
数组就是一个具有固定长度的包容多个相同类型对象 的数据结构。它的元素类型甚至可以是数组。 的数据结构。它的元素类型甚至可以是数组。 数组的声明、创建和初始化可以分别完成, 数组的声明、创建和初始化可以分别完成,也可以一 次完成。 次完成。 用来指示单个数组元素的下标必须总是从0开始。 用来指示单个数组元素的下标必须总是从0开始。 数组一旦创建后,其大小不可调整。 数组一旦创建后,其大小不可调整。 可以用数组对象的length属性来获得该数组可以容纳 可以用数组对象的length属性来获得该数组可以容纳 length 的元素个数。 的元素个数。 可以通过下标(整数数值或整型变量) 可以通过下标(整数数值或整型变量)来引用数组内 的指定位置的元素,下标不能超出数组元素个数。 的指定位置的元素,下标不能超出数组元素个数。 可使用相同的引用变量来引用一个全新的数组。 可使用相同的引用变量来引用一个全新的数组。
1第四章数组1学习目标理解数组的作用掌握数组的声明和初始化特点能够通过下标访问数组中的单个元素如何利用jdk提供的数组操作方法理解程序接收参数的过程灵活运用main的参数实现和程序交互掌握多维数组的声明和应用2341数组数组的作用在于提供了一种用来处理一组同类型数据的存储和访问机制因为在实际编程中你无法为每一个这样的数据声明一个变量
4. 多维数组的初始化
类似一维数组的初始化, 类似一维数组的初始化,多维数组的初始化即可 以在声明时直接初始化,也可以在创建时初始化。 以在声明时直接初始化,也可以在创建时初始化。 下面的例子演示了在声明时直接对数组进行初始 化: int [][] factors = {{2}, {3}, {2, 4}, {5}, {2, 3, 6}, {7}};
2
4.1 数组
数组的作用在于提供了一种用来处理一组同类型 数据的存储和访问机制,因为在实际编程中, 数据的存储和访问机制,因为在实际编程中,你 无法为每一个这样的数据声明一个变量。 无法为每一个这样的数据声明一个变量。 Java语言中 数组元素可以是基本类型, 语言中, 在Java语言中,数组元素可以是基本类型,也可 是对象。实际上,Java认为数组本身也是一个对 是对象。实际上,Java认为数组本身也是一个对 象。
19
3.一种非法的声明 3.一种非法的声明
尽管多维数组的声明格式, 尽管多维数组的声明格式,允许方括号在变量名 左边或者右边, 左边或者右边,但此种灵活性不适用于数组句法 的其它方面。例如: ][4 是非法的, 的其它方面。例如: new int [ ][4]是非法的,因 为这样的声明,编译器无法预先为之分配空间。 为这样的声明,编译器无法预先为之分配空间。
1
学习目标
理解数组的作用 掌握数组的声明和初始化特点 能够通过下标访问数组中的单个元素 如何利用JDK JDK提供的数组操作方法 如何利用JDK提供的数组操作方法 理解程序接收参数的过程,灵活运用main main的参 理解程序接收参数的过程,灵活运用main的参 数实现和程序交互 掌握多维数组的声明和应用
20
课堂练习
声明并创建一个如下数组。 声明并创建一个如下数组。
包含3 每行分别包含不同数目元素, 包含3行,每行分别包含不同数目元素,元素 数依次为 5,4,6
编写一个程序, 编写一个程序,逐个输出该数组的每个元素的 默认初始值。 默认初始值。
21
操作数组-复制、 4.4 操作数组-复制、排序和查找
15
4.1.5使用增强型循环访问数组元素 4.1.5使用增强型循环访问数组元素
for(目标数组元素的类型 变量名 目标数组名 目标数组元素的类型 变量名:目标数组名 目标数组名) int[] score = new int[5]; …… for (int x : score) { System.out.print(x+","); }
14
说出下面数组第3 说出下面数组第3个元素的值
int[] a = {1,3,6,7,8}; boolean[] b = new boolean[10]; float[] f={1.4f,5.6f,7.0f,2.5f,3.6f}; double[] d=new double[10]; long[] l;
上述数组的声明也可以修改为: 上述数组的声明也可以修改为:
int[][] twoDim =
18
new int[4][5];
2.不规则的多维数组 2.不规则的多维数组
int[][] twoDim = new int[4][]; twoDim[0] = new int [2]; twoDim[1] = new int [4]; twoDim[2] = new int [6]; twoDim[3] = new int [8];
数组声明后并不是就可以直接使用了, 数组声明后并不是就可以直接使用了,要想使用必须 要实际创建数组,为它分配实际的存储空间, 要实际创建数组,为它分配实际的存储空间,然后才 能存储元素。 能存储元素。
s = new char [20]; ] p = new Point [100]; ]
也可在运行时 用变量表示数组的大小。 也可在运行时,用变量表示数组的大小。 运行
4.1.4 访问数组
public class ArrayAccessDemo { public static void main(String[] args) { Байду номын сангаасnt[] a={1,3,7,2,6,5}; for(int i=0;i<a.length;i++){ System.out.println(第"+i+"个元素值为"+a[i]); } } }
复制:在数组内查找一个具体的值, 复制:在数组内查找一个具体的值,或者将一 个数组复制到另一个数组等。 个数组复制到另一个数组等。
System类提供的方法-arraycopy(), System类提供的方法-arraycopy(),程序 类提供的方法
在上述char数组s的例子中,每个值都被初始化为0 在上述char数组s的例子中,每个值都被初始化为0 char数组 u0000-null)字符 字符; (\u0000-null)字符; 数值类型的数组元素默认值为0 数值类型的数组元素默认值为0 boolean类型的数组元素默认值为 类型的数组元素默认值为false boolean类型的数组元素默认值为false 对象类型的数组元素默认值为null 对象类型的数组元素默认值为null
16
main方法中的参数 4.2 main方法中的参数
命令行的参数
main方法声明中的参数类型是一个字符串数组 main方法声明中的参数类型是一个字符串数组 //程序4-2:运行时参数的应用 运行时, 运行时,存放接收的命令行参数 public class CommandParameters { Java程序将接收的第一个参数存放在下标为 程序将接收的第一个参数存放在下标为0 Java程序将接收的第一个参数存放在下标为0 public static void main(String[] args) { 的位置,第二个参数存放在下标为1的位置, 的位置,第二个参数存放在下标为1的位置, for(int i=0;i<args.length;i++){ 其它的以此类推。 其它的以此类推。 System.out.printf("第%d个输入的参数是%s\n", i,args[i]);
int[] a; int len=10; a=new int[len];
注意:数组的大小一旦指定,就不可更改。 注意:数组的大小一旦指定,就不可更改。
5
4.1.3 初始化数组
初始化解决了当数组空间被分配时, 初始化解决了当数组空间被分配时,如何填充空间的问 题,而且预防了没有赋值就访问数组元素导致意外的情 况。 1.当创建一个数组时 每个元素都将被默认初始化。 当创建一个数组时, 1.当创建一个数组时,每个元素都将被默认初始化。
其结果与下列代码等同: 其结果与下列代码等同:
String names[] ; names = new String [3]; Georgianna”; names [0] = “Georgianna ; Georgianna names [1] = “Jen ; Jen”; Jen Simon”; names [2] = “Simon ; Simon 7
11
课堂练习
写出下面程序的运行结果
class Happy { public static void main(String args[]) { int index=1; int a[] =new int[3]; int bas =a[index]; int baz =bas + index System.out.println( a[baz] ); } }
6
Java编程语言允许使用下列形式快速创建数组 编程语言允许使用下列形式快速创建数组, 2. Java编程语言允许使用下列形式快速创建数组,并完 成初始化任务: 成初始化任务:
String names[] = { “Georgianna , Georgianna”, Georgianna “Jen , Jen”, Jen “Simon Simon” Simon };
12
课堂练习(cont.) 课堂练习(cont.)
判断正确
数组中的每个元素都是同样的类型 数组的大小在声明之后就是固定的了 数组的大小在创建后确定 数组的元素必须是基本类型的
13
课堂练习(cont.) 课堂练习(cont.)
下面哪一个语句是有效的数组声明? 下面哪一个语句是有效的数组声明?
int i= new int(30); double d[] = new double[30]; Point[] p= new Point(1..30); int i[] =(3,4,5,7); char[] c = new char(); float[] f={1.0f,1.5f,4.6f}; double d[] = new float[30];
8
访问数组- 4.1.4 访问数组-cont.
注意: 注意:
1.在Java编程语言中,所有数组的下标都从0 1.在Java编程语言中,所有数组的下标都从0开 编程语言中 访问数组元素可以通过下标进行, a[5]或 始。访问数组元素可以通过下标进行,如a[5]或 a[i]. 者a[i]. 2.一个数组中元素的数量被作为具有length属 一个数组中元素的数量被作为具有length 2.一个数组中元素的数量被作为具有length属 性的部分而被数组对象存储; 这个值被用来检查 性的部分而被数组对象存储; 所有运行时访问的界限。 所有运行时访问的界限。如果发生了一个越出界 限的访问,那么运行时的报错(异常) 限的访问,那么运行时的报错(异常)也就出现 了.
} } }
17
4.3 多维数组
1多维数组
Java编程语言没有像其它语言那样提供多维数 Java编程语言没有像其它语言那样提供多维数 组,因为一个数组可被声明为具有任何基础类 所以你可以创建数组的数组( 型,所以你可以创建数组的数组(和数组的数组 的数组,等等) 的数组,等等)。 [4][] []; int[][] twoDim = new int [4][]; twoDim[0] = new int[5]; twoDim[1] = new int[5]; twoDim[2] = new int[5]; twoDim[3] = new int[5];
3
4.1.1 数组的声明
传统方式
int[] score; char s[ ]; [ Point p[ ],q[]; // Point是一个类类型, Point是一个类类型 是一个类类型, [ 此处声明了两个数组
现代方式
char[ ] s; [ Point[ ] p, q; [
4
4.1.2 创建数组
在数组p的例子中, 每个值都被初始化为null null, 在数组p的例子中, 每个值都被初始化为null,表明它还未引用一 Point对象 对象。 Point()之后 之后, 个Point对象。在经过赋值 p[0] = new Point()之后,数组的第一 个元素引用为实际Point对象。 Point对象 个元素引用为实际Point对象。
9
访问数组- 4.1.4 访问数组-cont.
存储元素到数组
int[] a=new int[10]; a[0]=10; a[5]=2; a[7]=8;
10
小结: 小结:
数组就是一个具有固定长度的包容多个相同类型对象 的数据结构。它的元素类型甚至可以是数组。 的数据结构。它的元素类型甚至可以是数组。 数组的声明、创建和初始化可以分别完成, 数组的声明、创建和初始化可以分别完成,也可以一 次完成。 次完成。 用来指示单个数组元素的下标必须总是从0开始。 用来指示单个数组元素的下标必须总是从0开始。 数组一旦创建后,其大小不可调整。 数组一旦创建后,其大小不可调整。 可以用数组对象的length属性来获得该数组可以容纳 可以用数组对象的length属性来获得该数组可以容纳 length 的元素个数。 的元素个数。 可以通过下标(整数数值或整型变量) 可以通过下标(整数数值或整型变量)来引用数组内 的指定位置的元素,下标不能超出数组元素个数。 的指定位置的元素,下标不能超出数组元素个数。 可使用相同的引用变量来引用一个全新的数组。 可使用相同的引用变量来引用一个全新的数组。
1第四章数组1学习目标理解数组的作用掌握数组的声明和初始化特点能够通过下标访问数组中的单个元素如何利用jdk提供的数组操作方法理解程序接收参数的过程灵活运用main的参数实现和程序交互掌握多维数组的声明和应用2341数组数组的作用在于提供了一种用来处理一组同类型数据的存储和访问机制因为在实际编程中你无法为每一个这样的数据声明一个变量
4. 多维数组的初始化
类似一维数组的初始化, 类似一维数组的初始化,多维数组的初始化即可 以在声明时直接初始化,也可以在创建时初始化。 以在声明时直接初始化,也可以在创建时初始化。 下面的例子演示了在声明时直接对数组进行初始 化: int [][] factors = {{2}, {3}, {2, 4}, {5}, {2, 3, 6}, {7}};
2
4.1 数组
数组的作用在于提供了一种用来处理一组同类型 数据的存储和访问机制,因为在实际编程中, 数据的存储和访问机制,因为在实际编程中,你 无法为每一个这样的数据声明一个变量。 无法为每一个这样的数据声明一个变量。 Java语言中 数组元素可以是基本类型, 语言中, 在Java语言中,数组元素可以是基本类型,也可 是对象。实际上,Java认为数组本身也是一个对 是对象。实际上,Java认为数组本身也是一个对 象。
19
3.一种非法的声明 3.一种非法的声明
尽管多维数组的声明格式, 尽管多维数组的声明格式,允许方括号在变量名 左边或者右边, 左边或者右边,但此种灵活性不适用于数组句法 的其它方面。例如: ][4 是非法的, 的其它方面。例如: new int [ ][4]是非法的,因 为这样的声明,编译器无法预先为之分配空间。 为这样的声明,编译器无法预先为之分配空间。