admin 管理员组

文章数量: 1086019


2024年1月11日发(作者:return1l)

备 课 教 案

学年学期

课程名称 JAVA开发技术

主讲教师

授课对象

教学目的

1. 掌握数组的声明、表示及赋值。

2. 理解数组元素的内存分配。

重点:数组的声明、表示及赋值

难点:数组的内存分配

1.教师精讲理论内容

2.多媒体展示教学重点、及程序代码示例

3. 教师演示java数组的代码使用,学生做课堂做练习掌握。

教学重点和难点

教学方法和手段

教学 基 本 内容

导入:

数组的意义介绍:

之前学习内容中,存储、使用的数据都是单独一个个的数据,如25,a。但实际生活和应用中,经常需要使用和处理一连串的数据(一组数据),如全班同学的成绩。在java语言中,就是通过数组来实现对一组数据的存储和使用。

强调:

一个数组可以存放上千万个数据,但是要注意一个数组中必须存放相同数据类型的数据。

如存储都是浮点数类型(学生成绩),或者都是字符串类型(学生姓名)。但是不能在一个数组中既有浮点数据,又有字符串型数据。

备 注

一.数组的声明与内存的分配

要使用Java的数组,必须经过两个步骤:(1)声明数组、(2)分配内存给该数组。

这两个步骤的语法如下:

【格式1 数组的声明与分配内存】

数据类型数组名[ ] ;// 声明一维数组

数组名= new 数据类型[个数] ; // 分配内存给数组

解释:

1.数据类型:

声明数组中存储的数据元素的类型,常见的类型有整型、浮点型与字符型等。

2.数组名:

给这个数组起的名字,以方便该数组的使用。建议使用有意义的名称为数组命名。

3.分配内存:

数组声明后,接下来便是要配置数组所需的内存(数组元素只有放在内存中,才能成为真实的存在,才能使用)。

其中“个数”是告诉编译器,所声明的数组要存放多少个元素,由此来明确需分配多大的内存空间给该数组。

“new”则是命令编译器在内存中真实开辟一块空间供该数组使用。

举例:

int score[] ; // 声明整型数组score

score = new int[3]; // 为整型数组score分配内存空间,其元素个数为3

内存分配情况:(知识扩展,尽量理解)

在上例中的第一行,当声明一个整型数组score时,编译器会分配一块内存给它,即将用来保存指向数组实体的地址,而此时这个变量并没有包含任何内容,如图1所示。

图1 声明整型数组

声明之后,接着要做内存分配的操作,也就是上例中第二行语句。这一行会开辟3个可供保存整数的内存空间,并把此内存空间的参考地址赋给score变量。其内存分配的流程如图2所示。

图2 内存分配

可见数组变量score所保存的并非是数组的实体,而是数组实体的参考地址。

【格式2 声明数组的同时分配内存】

除了用格式4-1的这两行来声明并分配内存给数组之外,也可以用较为简洁的方式,把两行缩成一行来编写,其格式如下:

数据类型数组名[] = new 数据类型[个数]

上述的格式会在声明的同时,即分配一块内存空间,供该数组使用。

举例:

int score[] = new int[11] ;

// 声明一个元素个数为11的整型数组score,同时开辟一块内存空间供其使用

在Java中,由于整数数据类型所占用的空间为4个bytes,而整型数组score可保存的元素有11个,所以上例中占用的内存共有4 * 11 = 44个字节。图3是将数组score的保存用图形来表示,这是以后学习中经常用到的画图思考方式。

图3 数组的保存方式

二.数组中元素的表示方法

想要使用数组里的元素,就需要设法能够表示数组中的各元素。可以利用索引来完成。

Java的数组索引编号由0开始。如上节中的score数组,score[0]即代表socre数组中存放的第1个元素,score[1]代表第2个元素,…,score[10]为数组中第11个元素(也就是最后一个元素)。图4为score数组中元素的表示法及排列方式:

图4 数组中元素的排列

接下来,看一个范例了解程序中数组元素的使用。下面的程序声明了一个数组,长度为3,利用for循环输出数组的内容后,再输出数组的元素个数。

程序示例:TestJava4_

01 // 下面这段程序说明了数组的使用方法

02 public class TestJava4_1

03 {

04 public static void main(String args[])

05 {

06 int i;

07 int a[]; // 声明一个整型数组a

08 a=new int[3]; // 开辟内存空间供整型数组a使用,其元素个数为3

09

10 for(i=0;i<3;i++) // 输出数组的内容

11 ("a["+i+"] = "+a[i]+",");

12

13 n("n数组长度是:"+); // 输出数组长度

14 }

15 }

输出结果:

a[0] = 0, a[1] = 0, a[2] = 0,

数组长度是:3

程序说明:

1、第7行声明整型数组a;第8行开辟了一块内存空间整型数组a使用,其元素个数为3。

2、第10~11行,利用for循环输出数组的内容。由于程序中并未给予数组元素赋值,因此

输出的结果都是0。

3、第13行输出数组的长度。此例中数组的长度是3,即代表数组元素的个数有3个。

知识点:

在Java中取得数组的长度(也就是数组元素的个数)可以用“.length”完成,如下面的格式:

【 格式3 数组长度的取得】

数组名.length

也就是说,要取得TestJava4_1中所声明的数组a的元素个数,只要在数组a的名称后面加上“.length”即可,如下面的程序片段:

; // 取得数组的长度

三 数组初值的赋值

只有在数组中存放具体的数值,数组才有意义。所以我们需要给数组元素进行赋值。

可以直接在声明时就给数组赋初值。格式如下:

【格式4

数组赋初值】

数据类型数组名[] = {初值0,初值1,…,初值n}

解释:

1. 在大括号内的各初值会依序指定给数组的第1、…、n+1个元素。

2. 此方式并不需要将数组元素的个数列出,编译器根据所给出的初值个数来判断数组的长度。

范例:

int day[] = {32,23,45,22,13,45,78,96,43,32}; // 数组声明并赋初值

在上面的语句中,声明了一个整型数组day,虽然没有特别指明数组的长度,但是由于大括号里的初值有10个,编译器会分别依序指定给各元素存放,day[0]为32,day[1]为23,…,day[9]为32。

程序示例:TestJava4_

01 // 数组的赋值,这里采用静态方式赋值

02 public class TestJava4_2

03 {

04 public static void main(String args[])

05 {

06 int i;

07 int a[]={5,6,8}; // 声明一个整数数组a并赋初值

08

09 for(i=0;i<;i++) // 输出数组的内容

10 ("a["+i+"]="+a[i]+",");

11

12 n("n数组长度是:"+);

13 }

14 }输出结果:

a[0]=5, a[1]=6, a[2]=8,

数组长度是:3

除了在声明时就赋初值之外,也可以在程序中为某个特定的数组元素赋值。可以将程序TestJava4_2的第7行更改成下面的程序片段:

int a [] = new int[] ;

a[0] = 5 ;

a[1] = 6 ;

a[2] = 8 ;

四 简单的范例:找出数组元素中的最大值与最小值

由前几节的范例可知,数组的索引就好象饭店房间的编号一样,想要找到某个房间时,就得先找到房间编号!接下来再举一个例子,说明如何将数组里的最大值及最小值列出。

范例:TestJava4_

01 // 这个程序主要是求得数组中的最大值和最小值

02 public class TestJava4_3

03 {

04 public static void main(String args[])

05 {

06 int i,min,max;

07 int A[]={74,48,30,17,62}; // 声明整数数组A,并赋初值

08

09 min=max=A[0];

10 ("数组A的元素包括:");

11 for(i=0;i<;i++)

12 {

13 (A[i]+" ");

14 if(A[i]>max) // 判断最大值

15 max=A[i];

16 if(A[i]

17 min=A[i];

18 }

19 n("n数组的最大值是:"+max); // 输出最大值

20 n("数组的最小值是:"+min); // 输出最小值

21 }

22 }

输出结果:

数组A的元素包括:74 48 30 17 62

数组的最大值是:74

数组的最小值是:17

程序说明:

1、第6行声明整数变量i做为循环控制变量及数组的索引:另外也声明存放最小值的变量min与最大值的变量max。

2、第7行声明整型数组A,其数组元素有5个,其值分别为74、48、30、17、62。

3、第9行将min与max的初值设为数组的第一个元素。

4、第10~18行逐一输出数组里的内容,并判断数组里的最大值与最小值。

5、第19~20行输出比较后的最大值与最小值。

将变量min与max初值设成数组的第一个元素后,再逐一与数组中的各元素相比。比min小,就将该元素的值指定给min存放,使min的内容保持最小;同样的,当该元素比max大时,就将该元素的值指定给max存放,使max的内容保持最大。for循环执行完,也就表示数组中所有的元素都已经比较完毕,此时变量min与max的内容就是最小值与最大值。

板 书 设 计

备注

思 考 练 习

一.选择题:

1. 下面错误的初始化语句是:

str[]=”hello”; str[100]=”hello”;

str[]={‘h’,’e’,’l’,’l’,’o’}; D char str[]={“hello”};

2. 引用数组元素时,数组下标可以是:

A.整型常量 B.整型变量 C.整型表达式 D.以上均可

3. 下面程序的运行结果为:

main(){

int x=30;

int[] numbers = new int[x];

x = 60;

n();

}

A.30 B.60 C.90 D20

4. 数组a的第三个元素为:

A.a(3) B.a[3] C.a(2) D.a[2]

二.程序题:

歌手打分:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分

备注

教 学 反 思

备注


本文标签: 数组 元素 声明 使用 内存