资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 基本数据类型和数组数组第2章 基本数据类型和数组内容导读一维数组 常用算法 多维数组 经典算法 增强for循环与 数组为什么要使用数组v有很多不同类型的数据,如int、float、char型 等,也需要进行分类存放,这样便于查找2.5 数组vjava语言中,数组是一种复合数据类型。v数组是有序数据的集合,数组中的每个元素具有相 同的数据类型,可以用一个统一的数组名和下标来 唯一地确定数组中的元素。v数组元素的类型称为该数组的基类型(base type) ;保存元素的个数是一个固定的属性,称为长度( length)。v一维数组、多维数组2.5.1 一维数组1声明一维数组变量2分配数组内存空间3给数组元素赋值创建数组的步骤1、声明一维数组变量vtype arrayName;vtype arrayName;/(C风格的声明)类型(type)可以为Java中任意的数据类型,包括简 单类型或复合类型。例如:int intArray; Date dateArray;声明数组时数组的大小尚不可知,不能指 定数组长度!int intArray5;(错误!)v只是声明了数组变量,没有给数组分配内存2、创建一维数组v创建一维数组,即为数组分配内存空间静态初始化 动态初始化2、创建一维数组v静态初始化 int num=1,2,3; String stringArray=“abc“, “How“, “you“; 注意!静态初始化只能在声明数组变量的 同时使用。2、创建一维数组v 动态初始化 声明一个int数组变量int num; 创建大小为7的数组,并将它赋值给变量num = new int7; 或 int i=6;num = new inti+1; 赋于int数组每一个元素一个int值num 0=21;num 1=32; num 6=43; lJava允许使用int类型变量指定数组的大小 lnew创建的数组是个空数组,系统会给每个数组元 素一个该类型的默认值v动态初始化 int num; num = new int21,32,8,0,3,66,43; 使用赋值时,不能在方括号中指定 具体的长度,长度隐含在中。数组元素的默认值vbyte short int long 为0 vfloat double 为0.0 vchar 为 0 vboolean 为 false v引用类型为null元素本身是基本类类型的, 但数组组却是个对对象2、创建一维数组复合类型的数组String stringArray;String stringArray = new String3; /为数组中每个元素开辟引用空间stringArray0= new String(“How“); /为第一个数组元素赋值 stringArray1= new String(“are“);stringArray2= new String(“you“);u声明一个Dog数组变量pets u创建大小为7的Dog数组对象,并赋给变量pets u创建7个新Dog对象并将它赋值给数组元素Dog pets; pets = new Dog7; pets0 = new Dog(); pets1 = new Dog(); Dog pets; pets = new Dog7;pets0 = new Dog(); pets1 = new Dog();数组的一个属性-lengthv所有java数组都有一个length属性,表示数组的 长度 v长度的意思是指这个数组最多能保存的元素个数 vlength属性只能被读取,不能被修改 varrayName.length元素的引用(边界)v 数组元素的引用方式为:arrayNameindexindex为数组下标,它可以为整型常数或表 达式,下标从0开始。每个数组都有一个属性 length 指明它的 长度。int intArray = new int10;for(int i=0; iintArray.length; i+) / 使用intArray.length 不会引起数组下标越界。2.5.2 多维数组vJava语言中,多维数组被看作数组的数组。v内容:二维数组的声明二维数组的创建二维数组元素的引用二维数组二维数组的声明type arrayName;type arrayName ;例如:int intArray;int a2;多维数组可以看作是“数组的数组”v分配内存空间,有两种方法: 直接为每一维分配空间:int a = new int23; 分别为每一维分配空间:int a = new int2 ;a0 = new int3;a1 = new int3;可以为每行设置为空间大小不同的数组a0 = new int3;a1 = new int5;二维数组的创建静态初始化在定义数组的同时进行初始化动态初始化先定义数组,分配空间, 然后直接对每个元素进行赋值二维数组静态初始化 int intArray=1,2,2,3,3,4,5; Java语言中,由于把二维数组看作是 数组的数组,数组空间不是连续分配的,所以 不要求二维数组每一维的大小相同。二维数组动态初始化 1)直接为每一维分配空间,格式如下:arrayName = new typeLength1Length2; 例: int students= new int23; 2) new操作符允许不设置某些维的大小,但 第一维大小必须指定。boolean checkBoard = new boolean8;二维数组动态初始化3)从最高维开始,分别为每一维分配空间:checkBoard0= new boolean8; checkBoard7= new boolean8; 等价与 boolean checkBoard = new boolean88;4)多维数组不必是矩形:checkBoard0= new boolean8; checkBoard1= new boolean7;v 对二维复合数据类型的数组,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。而且,必须为每个数组元素单独分配空间。String s = new String2 ;/为最高维分配引用空间 s0= new String2;s1= new String2; s00= new String(“Good”); / 为每个数组元素单独分配空间s01= new String(“Luck”);s10= new String(“to”); s11= new String(“You”); 二维数组元素的引用二维数组元素的引用 对二维数组中的每个元素,引用方式为 :arrayNameindex1index2 例如: num10; 对多维数组,length属性表示第一维数 组的长度 v例子:怎样使用数组。匿名数组v有些数组只用于一处,无需一个名字,例如:作为 实参传递给某个方法的数组,在Java中可以创建匿 名数组。 v匿名数组隐式定义了数组的大小,并用大括号为之 填入了元素。 v例如:Dog pokey = new Dog(“gray”);Cat simon = new Cat(“orange”);setPets(new Animalpokey,simon);数组的拷贝vSystem.arraycopy(); v void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src - 源数组。 srcPos - 源数组中的起始位置。 dest - 目标数组。 destPos - 目标数据中的起始位置。 length - 要复制的数组元素的数量。经验之谈数组常见错误v常见错误1:没有明确指明数组 的大小 v常见错误2:数组越界 v常见错误3:数组初始化错误 v常见错误4:没有给数组元素赋 值增强for循环v语法: for(type 变量名:集合变量名) v注意: 迭代变量必须在()中定义 集合变量可以是数组或实现了Iterable 接口的集合增强for循环v二维数组通过增强for循环输出增强for循环v不能在增强for循环中给数组赋值问题v 问题:以下语句正确吗? 1)int num = new int2;num=1,2,0; 2) int num = new int3;num0=1,2;num1=0; 3) int num = new int3;num00= 1; num01= 2; num10= 0; v 如果不正确,应该怎样修改?问题 v 如果不正确,应该怎样修改? vint num =1,2,0; 2) int num = new int3;int ia1 = 1,2;int ia2 = 0;num 0 = ia1;num 1 = ia2; 3) int num = new int3;num0 = new int2;num1 = new int1;num00= 1; num01= 2; num10= 0;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号