备课教案学年学期课程名称JAVA开发技术主讲教师授课对象教学目的1.掌握数组的声明、表示及赋值。2.理解数组元素的内存分配。教学重点和难点重点:数组的声明、表示及赋值难点:数组的内存分配教学方法和手段1.教师精讲理论内容2.多媒体展示教学重点、及程序代码示例3.教师演示java数组的代码使用,学生做课堂做练习掌握。教学基本内容备注导入:数组的意义介绍:之前学习内容中,存储、使用的数据都是单独一个个的数据,如25,a。但实际生活和应用中,经常需要使用和处理一连串的数据(一组数据),如全班同学的成绩。在java语言中,就是通过数组来实现对一组数据的存储和使用。强调:一个数组可以存放上千万个数据,但是要注意一个数组中必须存放相同数据类型的数据。如存储都是浮点数类型(学生成绩),或者都是字符串类型(学生姓名)。但是不能在一个数组中既有浮点数据,又有字符串型数据。一.数组的声明与内存的分配要使用Java的数组,必须经过两个步骤:(1)声明数组、(2)分配内存给该数组。这两个步骤的语法如下:【格式1数组的声明与分配内存】数据类型数组名[];//声明一维数组数组名=new数据类型[个数];//分配内存给数组解释:1.数据类型:声明数组中存储的数据元素的类型,常见的类型有整型、浮点型与字符型等。2.数组名:给这个数组起的名字,以方便该数组的使用。建议使用有意义的名称为数组命名。3.分配内存:数组声明后,接下来便是要配置数组所需的内存(数组元素只有放在内存中,才能成为真实的存在,才能使用)。其中“个数”是告诉编译器,所声明的数组要存放多少个元素,由此来明确需分配多大的内存空间给该数组。“new”则是命令编译器在内存中真实开辟一块空间供该数组使用。举例:intscore[];//声明整型数组scorescore=newint[3];//为整型数组score分配内存空间,其元素个数为3内存分配情况:(知识扩展,尽量理解)在上例中的第一行,当声明一个整型数组score时,编译器会分配一块内存给它,即将用来保存指向数组实体的地址,而此时这个变量并没有包含任何内容,如图1所示。图1声明整型数组声明之后,接着要做内存分配的操作,也就是上例中第二行语句。这一行会开辟3个可供保存整数的内存空间,并把此内存空间的参考地址赋给score变量。其内存分配的流程如图2所示。图2内存分配可见数组变量score所保存的并非是数组的实体,而是数组实体的参考地址。【格式2声明数组的同时分配内存】除了用格式4-1的这两行来声明并分配内存给数组之外,也可以用较为简洁的方式,把两行缩成一行来编写,其格式如下:数据类型数组名[]=new数据类型[个数]上述的格式会在声明的同时,即分配一块内存空间,供该数组使用。举例:intscore[]=newint[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_1.java01//下面这段程序说明了数组的使用方法02publicclassTestJava4_103{04publicstaticvoidmain(Stringargs[])05{06inti;07inta[];//声明一个整型数组a08a=newint[3];//开辟内存空间供整型数组a使用,其元素个数为30910for(i=0;i3;i++)//输出数组的内容11System.out.print(a[+i+]=+a[i]+,);1213System.out.println(\n数组长度是:+a.length);//输出数组长度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”即可,如下面的程序片段:a.length;//取得数组的长度三数组初值的赋值只有在数组中存放具体的数值,数组才有意义。所以我们需要给数组元素进行赋值。可以直接在声明时就给数组赋初值。格式如下:【格式4数组赋初值】数据类型数组名[]={初值0,初值1,…,初值n}解释:1.在大括号内的各初值会依序指定给数组的第1、…、n+1个元素。2.此方式并不需要将数组元素的个数列出,编译器根据所给出的初值个数来判断数组的长度。范例:intday[]={32,23,45,22,13,45,78,96,43,32};//数组声明并赋初值在上面的语句中,声明了一个整型数组day,虽然没有特别指明数组的长度,但是由于大括号里的初值有10个,编译器会分别依序指定给各元素存放,day[0]为32,day[1]为23,…,day[9]为32。程序示例:TestJava4_2.java01//数组的赋值,这里采用静态方式赋值02publicclassTestJava4_203{04publicstaticvoidmain(Stringargs[])05{06inti;07inta[]={5,6,8};//声明一个整数数组a并赋初值0809for(i=0;ia.length;i++)//输出数组的内容10System.out.print(a[+i+]=+a[i]+,);1112System.out.println(\n数组长度是:+a.length);13}14}输出结果:a[0]=5,a[1]=6,a[2]=8,数组长度是:3除了在声明时就赋初值之外,也可以在程序中为某个特定的数组元素赋值。可以将程序TestJava4_2的第7行更改成下面的程序片段:inta[]=newint[];a[0]=5;a[1]=6;a[2]=8;四简单的范例:找出数组元素中的最大值与最小值由前几节的范例可知,数组的索引就好象饭店房间的编号一样,想要找到某个房间时,就得先找到房间编号!接下来再举一个例子,说明如何将数组里的最大值及最小值列出。范例:TestJava4_3.java01//这个程序主要是求得数组中的最大值和最小值02publicclassTestJava4_303{04publicstaticvoidmain(Stringargs[])05{06inti,min,max;07intA[]={74,48,30,17,62};//声明整数数组A,并赋初值0809min=max=A[0];10System.out.print(数组A的元素包括:);11for(i=0;iA.length;i++)12{13System.out.print(A[i]+);14if(A[i]max)//判断最大值15max=A[i];16if(A[i]min)//判断最小值17min=A[i];18}19System.out.println(\n数组的最大值是:+max);//输出最大值20System.out.println(数组的最小值是:+min);//输出最小值21}22}输出结果:数组A的元素包括:7448301762数组的最大值是: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.下面错误的初始化语句是:A.charstr[]=”hello”;B.charstr[100]=”hello”;C.charstr[]={‘h’,’e’,’l’,’l’,’o’};Dcharstr[]={“hello”};2.引用数组元素时,数组下标可以是:A.整型常量B.整型变量C.整型表达式D.以上均可3.下面程序的运行结果为:main(){intx=30;int[]numbers=newint[x];x=60;System.out.println(numbers.length);}A.30B.60C.90D204.数组a的第三个元素为:A.a(3)B.a[3]C.a(2)D.a[2]二.程序题:歌手打分:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分教学反思备注