《Java程序设计教程》课件第四章:数组.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Java程序设计教程》课件第四章:数组.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计教程 Java 程序设计 教程 课件 第四 数组
- 资源描述:
-
1、本章学习目标:掌握数组的声明和创建 掌握数组的初始化 了解二维数组的定义和访问 掌握foreach遍历数组 了解Arrays类的基本应用第四章第四章 数组数组 数组是编程语言中常见的一种数据结构,是多个数据类型相同元素的有序集合。数组可用于存储多个数据,每个数组元素存放一个数据,通常可通过数组元素的索引来访问数组元素,包括为数组元素赋值和取出数组元素的值。根据数组中组织结构的不同,数组可以分为一维数组,二维数组和多维数组。第第1 1节节part创建数组 Java数组要求所有的元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能存储多
2、个数据类型的数据。Java数组既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有的数组元素具有相同的类型即可。值得注意的是,数组也是一种数据类型,它本身是一种引用类型。创建数组本节概述 在Java编程语言中,定义数组时并不为数组元素分配内存。只有在初始化后才会为数组中的每一个元素分配空间,并且值得注意的是数组必须经过初始化后才可以引用。Java语言支持两种语法格式来定义数组:dataType arrayName;dataType arrayName ;对这两种语法格式而言,通常推荐使用第一种格式。因为第一种格式不仅具有更好的语意,而且具有更好的可读性。其中,dataType是数据元素
3、的数据类型,arrayName是用户自定义的数组名称,数组名的命名要符合标识符的命名规则。4.1.1数组的声明数组的声明 下面代码示例了一维数组的声明。int number;/声明一个整型数组float f;/声明一个单精度浮点型数组double d;/声明一个双精度浮点型数组boolean b;/声明一个布尔型数组char c;/声明一个字符型数组String str;/声明一个字符串型数组 上述代码只是声明了数组变量,在内存中并没有给数组分配空间,因此还不能访问数组中的数据。要访问数组,需在内存中给数组分配存储空间,并指定数组的长度。4.1.1数组的声明 数组是一种引用类型的变量,因此使用
4、它定义一个变量时,仅仅表示定义了一个引用变量,这个引用变量还未指向任何有效的内存,因此定义数组时不能指定数组的长度。而且由于定义数组只是定义了一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间存储数组元素,因此这个数组也不能使用,只有对数组进行初始化后才可以使用。所谓初始化,就是用关键字new为数组分配内存空间,并为每个数组元素赋初始值。一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。即使把某个数组元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。数组的初始化有静态初始化和动态初始化两种方式。静态初始化时由程序员显示指定
5、每个数组元素的初始值,由系统决定数组长度;动态初始化时程序员只指定数组长度,由系统为数组元素分配初始值。4.1.2数组的初始化数组的初始化1.1.静态初始化静态初始化静态初始化的语法格式如下:arrayName=new dataType num1,num2,num3.;在上面的语法格式中,dataType就是数组元素的数据类型,此处的dataType必须与定义数组变量时所使用的dataType相同,也可以是定义数组时所指定的dataType的子类,并使用花括号把所有的数组元素括起来,多个元素之间用逗号隔开。下面代码示例了数组的静态初始化。4.1.2数组的初始化【代码4.1】ArrayInit.
6、javapackage com;public class ArrayInit public static void main(String args)/定义一个int数组类型的变量 int arrayA;/使用静态初始化方式初始化数组 arrayA=new int1,2,3,4;/上述定义数组和初始化可以简化为:int arrayA=1,2,3,4;/定义一个Object类型数组 Object arrayObject;/定义数组时数组元素类型的子类 arrayObject=new StringJava,MySql,单片机技术;2.2.动态初始化动态初始化动态初始化的语法格式如下:arrayNa
7、me=new dataType length;在上面的语法中,需要指定一个数组长度的length参数,也就是可以容纳数组元素的个数。与静态初始化相似的是,此处的dataType必须与定义数组变量时所使用的dataType相同,或者是定义数组时所指定的dataType的子类。下面代码示例了数组的动态初始化。4.1.2数组的初始化【代码4.2】ArrayInitTwo.javapackage com;public class ArrayInit public static void main(String args)/定义一个int数组类型的变量int arrayA;/使用动态初始化方式初始化数组
8、arrayA=new int4;/定义一个Object类型数组Object arrayObject;/初始化数组arrayObject=new String5;需要注意注意的是,不要同时使用静态初始化和动态初始化,也就是说,不要在进行数组初始化时,既指定数组的长度,又为数组元素分配初始值。在执行动态初始化时,系统按如下规则为数组元素分配初始值:1、基本类型中的整数类型(byte、short、int和long),则数组元素默认值为0。2、基本类型中的浮点类型(float和double),则数组元素默认值为0.0。3、基本类型中的字符类型(char),则数组元素默认值为u0000。4、基本类型中的
9、布尔类型(boolean),则数组元素默认值为false。5、引用类型(类、接口和数组),则数组元素的值为null。4.1.2数组的初始化第第2 2节节part访问数组访问数组 数组最常用的用法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值。访问数组元素中某个元素的语法格式如下:arrayName index 在上面的语法中,index表示数组的下标索引,其取值范围从0开始,最大值为数组的长度-1。例如,array0表示数组array的第1个元素,array10表示数组array的第11个元素。数组的长度可以通过“数组名.length”进行获取。如果访问数组元素时指定的下标索引值小
10、于0,或者大于等于数组的长度,编译程序不会出现任何错误,但运行时会出现异常:java.lang.ArrayIndexOutOfBoundsException:N(数组索引越界异常),异常信息后的N就是程序员试图访问的数组下标索引。下面案例示例了数组的使用。访问数组访问数组【代码4.3】ArrayDemo.javapackage com;public class ArrayDemo public static void main(String args)/声明一个整型数组并动态初始化int array=new int10;/输出数组array的长度System.out.println(数组arr
11、ay的长度为:+array.length);/为数组赋值for(int i=0;iarray.length;i+)arrayi=(int)(Math.random()*100);/遍历数组array的元素System.out.println(数组array的元素为:);for(int i=0;iarray.length;i+)System.out.print(arrayi+);运行结果如下:数组array的长度为:10数组array的元素为:40 28 46 87 85 84 10 94 17 95第第3 3节节part冒泡排序算法冒泡排序算法 冒泡排序是一种简单的排序算法。这个算法的名字由来
12、是因为越大的元素会经数据交换慢慢“浮”到数列的顶端而得名,它重复访问要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。冒泡排序算法的原理如下:1.比较相邻的元素,如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。下面代码示例了冒泡排序的算法。冒泡排序算法冒泡排序算法【代码4.4】Bubbling.javapackage com;public class Bubblin
13、g public static void main(String args)/声明一个数组并静态初始化int array=32,12,45,67,89,54,64,74,80,79;int temp=0;/定义一个交换元素的中间变量for(int i=1;iarray.length;i+)for(int j=0;jarray.length-i;j+)/判断相邻两个数的大小,并按大小交换位置if(arrayj+1arrayj)temp=arrayj+1;arrayj+1=arrayj;arrayj=temp;/输出排序后的结果System.out.println(数组排序后的结果为:);for(
14、int i=0;iarray.length;i+)System.out.print(arrayi+);运行结果如下:数组排序后的结果为:12 32 45 54 64 67 74 79 80 89第第4 4节节partforeach遍历数组 Java从JDK1.5版本之后,提供了一种更简单的循环:foreach循环。这种循环用于遍历数组或集合更为简洁,使用foreach循环遍历数组或集合元素时,无须获得数组或集合长度,也无须根据索引来访问数组元素或集合元素,foreach循环能自动遍历数组或集合的每个元素。foreach语句的语法结构如下所示:for(数据类型 变量名:数组名)注意,foreac
15、h语句中的数据类型必须与数组的数据类型一致。foreach遍历数组Foreach遍历数组下述案例示例了foreach语句的应用,代码如下所示。【代码4.5】ForeachExample.javapackage com;public class ForeachExample public static void main(String args)/定义并初始化数组char ch=a,b,c,d;/使用foreach语句遍历数组的元素System.out.println(“数组中的元素有:”);for(char e:ch)System.out.print(e+);foreach遍历数组运行结果如下
展开阅读全文