JAVA编程基础-04数组.doc
JAVA编程基础 数组3 Sept. 2008© Neusoft Confidential第四章 数 组目标:介绍关于数组的相关知识。通过本课的学习,学员应该掌握如下知识:1)创建数组及初始化其中数据2)了解数组在内存中的表现形式3)一维数组及多维数组的创建和遍历4)数组的复制和排序及数组异常教学方法:讲授ppt 上机练习本章要点··一维数组一维数组的声明、创建、初始化数组在内存中的表示数组的元素数组的长度数组的常见错误多维数组二维数组的声明、创建、初始化数组的复制数组的排序Contents123一维数组多维数组数组的操作数组的基本概念·数组的概念数组可以看成是多个相同类型数据的组合,实现对这些数据的统一管理1,2,3,4,5“apple”,“pear”,“banana”,“grape”数组中的每一个数据 数组的一个元素(element)数组中的元素可以是任何数据类型,包括基本数据类型和引用类型数组中元素的个数,称为数组的长度(length)JAVA语言中声明数组时不能指定其长度e.g. int a5; /非法数组的声明·一维数组的声明·数组类型示例数组名 或数组类型 stack数组名heap声明后的内存情况int a ;int b ;double d ;char ch ;Student stu ;anull数组的创建··一维数组的创建数组名 = new 数据元素类型 元素个数 示例stackheap创建后的内存情况int a ;a = new int5;a0X12400000int a = new int5;一维数组的创建·数组对象通过new语句实例化后,如果未明确给各数组元素赋初值,系统会根据数组中元素声明的数据类型自动初始化数组元素,即赋予默认数值。数组中不同基本数据类型元素的初始值如下表所示:8元素类型初始值元素类型初始值byte0short0int0long0Lfloat0,0fdouble0,0dcharu0000booleanfalsereferencenulln ll数组的初始化·初始化在创建数组的同时就为数组元素分配空间并赋值数组类型 数组名 = 元素1,元素2,或数组类型 数组名 = new 数据类型 元素1,元素2,int a = 1,2,3,4,5 ;或int a = new int1,2,3,4,5 ;数组元素的访问·数组元素的访问Java中,数组元素的下标从0开始int a ;a = new int5 ;数组名元素下标 = 元素值;a0 = 1;a1 = 2;a2 = 3;a3 = 4;a4 = 5;数组的长度属性···数组的长度(length)必须>=0;length为只读。利用length遍历数组iintt array ;array = new int 4 ;数组 练习说明下列创建数组的方法那些是正确的_。A)B)C)D)E)int dim = new int4;int dim4 = new int ;int dim = new int 1,2,3,4;char a = A, B;char c = “ABC”;答案 :A、C、D数组的异常··数组中的常见错误数组越界异常( ArrayIndexOutOfBoundsException )数组越界异常class Array_exception2 public static void main(String args)int a=new int3;a0=1;a1=2;a2=3;a3=4;System.out.println(a3);Contents123一维数组多维数组数组的操作多维数组·多维数组的概念Java中没有真正的多维数组,只有数组的数组锯齿数组Java中多维数组不一定是规则矩阵形式多维数组的声明·二维数组的声明数组类型 数组名 或数组类型 数组名数组类型 数组名 int a ;int b ;int c ;多维数组的创建·二维数组的创建数组名 = new 数据元素类型 行数 列数 ;或数组名 = new 数据元素类型 行数 ;a = new int 34 ;a = new int 3 ;a = new int 4 ; /非法必须声明行的个数多维数组的初始化·二维数组的初始化数组类型 数组名 = 元素11,元素12, , 元素21,元素22, 或数组类型 数组名 = new 数据类型 元素11,元素12, , 元素21, int a = 1,2,3, 4,5, 7 ;int a = new int 1,2,3, 4,5, 7 ;多维数组的初始化·二维数组的初始化int a = new int3 ;a0 = new int2;a1 = new int3;a2 = new int4;a00 = 1;a01 = 2;多维数组的内存表示·二维数组在内存中的表示int a = 1,2,3, 4,5, 7 ;stackheapa0X1241a0a123a24a0a1a257数组 练习int a = new int34;for(int i=0;i <a.length;i+)for(int j=0;j <ai.length;j+)aij=i+j;,则a23 = _A.3B.4C.5D.2答案 :CContents123一维数组多维数组数组的操作数组的遍历·数组的遍历利用循环语句 和 数组下标 练习Array_traversal.java循环遍历字符串数组“red” ”orange” ”yellow”,“green”,“blue”,”purple”,并将其打印class Array_traversal public static void main(String args )String color = "red","orange","yellow","green","blue","purple"for(int i=0;i<color.length;i+)System.out.println(colori);”, ”,数组的复制·数组的复制 System.arraycopy( )System.arraycopy(source,srcPos,dest,destPos,length)复制source数组中从下标srcPos开始的length个元素到目标数组dest,并从目标数组的下标为destPos的位置开始储存source: 源数组srcPos: 源数组中的起始位置dest: 目标数组destPos:目标数组中的起始位置length: 要复制的数组元素的个数 练习Array_copy.java复制数组1,2,3,4,5中从下标0开始的5个元素到目标数组6,7,8,9,10,11,12,13,14,15,并从目标数组的下标为0的位置开始储存数组的排序··数组的排序 java.util.Arrays.sort( )Arrays.sort(arr_name)Arrays.sort(arr_name,fromIndex,toIndex)对数组arr_name中,从下标为fromIndex到toIndex的元素(不包括toIndex)进行升序排序示例:ArraySort_sample.javaint point = 1,6,2,3,9,4,5,7,8;java.util.Arrays.sort( point );for(int i=0;i<point.length;i+)System.out.println(pointi);小结··一维数组理解解数组的元素掌握数组的长度掌握一维数组的声明、创建、初始化理解数组在内存中的表示数组的常见错误多维数组掌握二维数组的声明、创建、初始化理解数组的复制理解数组的排序