Java语言程序设计与实现项目四-数组课件.ppt
项目四 数组,4.1 一维数组,2022年11月4日星期五,1,项目四 数组 4.1 一维数组09 十月 20221,2022年11月4日星期五,4.1 一维数组,1一维数组的声明一维数组声明的一般格式如下:数据类型 数组名 ;或:数据类型 数组名;,2,09 十月 20224.1 一维数组1一维数组的声明2,例如:int intArray; /声明一个整型数组String strArray; /声明一个字符串数组,2022年11月4日星期五,3,例如:09 十月 20223,2022年11月4日星期五,2一维数组大小的定义及初始化一般情况下,使用new运算符定义数组大小,例如下边的程序语句:int intA ; /声明一个整型数组intA = new int5; /定义数组可以存放5个整数元素,4,09 十月 20222一维数组大小的定义及初始化4,String strA ; /声明一个字符串数组String strA = new String3; /定义数组可以存放三个字符串元素,2022年11月4日星期五,5,String strA ; /声明一个字符串数组0,/为数组中每个元素赋值 intA 0=1; /数组下标从0开始intA 1=2;intA 2=3;intA 3=4;intA 4=5;strA 0=How; strA 1=are;strA 2=you;,2022年11月4日星期五,6,/为数组中每个元素赋值 09 十月 20226,通常我们也采用如下方式为数组元素赋初值并由初值的个数确定数组的大小:int intA =1,2,3,4,5;String stringA =How, are, you;以达到和上边同样的目的。,2022年11月4日星期五,7,通常我们也采用如下方式为数组元素赋初值并由初值的个数确定数组,2022年11月4日星期五,3一维数组元素的引用如前所述,以数组名和下标引用数组元素,数组元素的引用方式为:数组名下标,8,09 十月 20223一维数组元素的引用8,例题4.1 详见P58,2022年11月4日星期五,9,例题4.1 详见P5809 十月 20229,运行结果:,2022年11月4日星期五,10,运行结果:09 十月 202210,4.2 二维及多维数组,2022年11月4日星期五,11,4.2 二维及多维数组09 十月 202211,4.2 二维及多维数组,1、二维数组的声明声明二维数组的一般格式如下:数据类型 数组名 ;或:数据类型 数组名;,2022年11月4日星期五,12,4.2 二维及多维数组1、二维数组的声明09 十月 2022,2022年11月4日星期五,2、二维数组大小的定义及初始化(1)先声明而后定义最后再赋值例如下边的程序语句:int matrix; /声明二维整型数组matrixmatrix = new int33; /定义matrix包含33 九个元素,13,09 十月 20222、二维数组大小的定义及初始化13,matrix00=1; /为第一个元素赋值matrix01=2; /为第二个元素赋值matrix22=9; /为第九个元素赋值,2022年11月4日星期五,14,matrix00=1; /为第一个元素赋值0,2022年11月4日星期五,(2) 直接定义大小而后赋值例如下边的程序语句:int matrix=new int33;/定义二维整型数组matrix包含33九个元素matrix00=1; /为第一个元素赋值 matrix22=9; /为第九个元素赋值,15,09 十月 2022(2) 直接定义大小而后赋值15,2022年11月4日星期五,(3)由初始化值的个数确定数组的大小在元素个数较少并且初值已确定时通常采用此种方式,例如:int matrix=1,2,3,4,5,6,7,8,9;/由元素个数确定3行3列,16,09 十月 2022(3)由初始化值的个数确定数组的大小16,2022年11月4日星期五,3二维数组元素的应用,17,09 十月 20223二维数组元素的应用17,4. 不同长度的二维数组要存储乘法表的值需要一个三角数组。在Java中,由于把二维数组看作是一维数组的数组,因此可以把二维数组的每一行作为一个一维数组分别定义,并不要求二维数组每一行的元素个数都相同。,2022年11月4日星期五,18,4. 不同长度的二维数组09 十月 202218,int a = new int2 ; /说明a是二维数组,有2行a0 = new int3; /a0定义第1行,有3列a1 = new int5; /a1定义第2行,有5列,2022年11月4日星期五,19,int a = new int2 ; /,例题4.3 详见P61,2022年11月4日星期五,20,例题4.3 详见P6109 十月 202220,运行结果:,2022年11月4日星期五,21,运行结果:09 十月 202221,4.3 数组(Arrays)类,2022年11月4日星期五,22,4.3 数组(Arrays)类09 十月 202222,2022年11月4日星期五,4.3 数组(Arrays)类数组类提供众多的类方法(静态方法)对各种类型的数组进行运算操作,下边列出一些常用的类方法供大家使用时参考,如果使用其他的方法可参阅JDK文档。,23,09 十月 20224.3 数组(Arrays)类23,(1) static void sort(数据类型 数组名) 用于对数组进行排序(升序),数据类型是除boolean之外的任何数据类型。,2022年11月4日星期五,24,(1) static void sort(数据类型 ,(2) static void sort(数据类型 a, int start,int end) 对数组a中指定范围从start到end位置之间的数据元素进行排序。当start大于end时引发IllegalArgumentException异常。当超界时,引发ArrayIndexOutOfBoundsException异常。,2022年11月4日星期五,25,(2) static void sort(数据类型 a,(3)static void fill(数据类型 a,数据类型 value) 设置a数组各个元素的值为value。,2022年11月4日星期五,26,(3)static void fill(数据类型 a,(4)static void fill(数据类型 a,int start,int end,数据类型 value) 设置a数组中从start到end位置的元素的值为value。,2022年11月4日星期五,27,(4)static void fill(数据类型 a,(5)static int binarySeach(数据类型 a,数据类型 key) 利用二进制搜索数组(排过序)内元素值为key的所在位置。,2022年11月4日星期五,28,(5)static int binarySeach(数据类型,(6)static boolean equals(数据类型 d1,数据类型 d2) 判断d1和d2两数组是否相等。,2022年11月4日星期五,29,(6)static boolean equals(数据类型,我们只要掌握类方法的引用即可对数组进行相关的运算操作。类方法的一般引用格式如下: 类名.方法名(参数表);,2022年11月4日星期五,30,我们只要掌握类方法的引用即可对数组进行相关的运算操作。类方法,例题4.4 详见P62,2022年11月4日星期五,31,例题4.4 详见P6209 十月 202231,运行结果:,2022年11月4日星期五,32,运行结果:09 十月 202232,4.4 字符串,2022年11月4日星期五,33,4.4 字符串09 十月 202233,2022年11月4日星期五,4.4 字符串,字符是一种基本的数据类型,而字符串是抽象的数据类型,只能使用对象表示字符串。前边我们已经对字符串进行了简单处理及其操作。下边我们将详细介绍用于字符串处理的类及其应用。,34,09 十月 20224.4 字符串字符是一种基本的数据类型,2022年11月4日星期五,4.4.1 String类String类是最常用的一个类,它用于生成字符串对象,对字符串进行相关的处理。1、构造字符串对象在前边我们使用字符串时,是直接把字符串常量赋给了字符串对象。其实String类提供了如下一些常用的构造函数用来构造字符串对象:,35,09 十月 20224.4.1 String类35,2022年11月4日星期五,1)String() 构造一个空的字符串对象。2)String( char chars ) 以字符数组chars的内容构造一个字符串对象。3)String( char chars , int startIndex, int numChars ) 以字符数组chars中从startIndex位置开始的numChars个字符构造一个字符串对象。,36,09 十月 20221)String() 构造一个空的字符串,2022年11月4日星期五,4)String(byte bytes) 以字节数组bytes的内容构造一个字符串对象。5)String(bytebytes, intoffset, intlength) 以字节数组bytes中从offset位置开始的length个字节构造一个字符串对象。,37,09 十月 20224)String(byte by,2022年11月4日星期五,2String类对象的常用方法String类也提供了众多的方法用于操作字符串,以下列出一些常用的方法:1)public int length() 此方法返回字符串的字符个数。,38,09 十月 20222String类对象的常用方法38,2022年11月4日星期五,2) public char charAt(int index) 此方法返回字符串中index位置上的字符,其中index 值的 范围是0length-1。,39,09 十月 20222) public char charA,例如:String str1=new String(“This is a string.”); /定义字符串对象str1int n=str1.length(); /获取字符串str1的长度n=17char ch1=str1.charAt(n-2); /获取字符串str1倒数第二个字符,ch1=g,2022年11月4日星期五,40,例如:09 十月 202240,2022年11月4日星期五,3)public int indexOf(char ch) 返回字符ch在字符串中第一次出现的位置。4)public lastIndexOf(char ch) 返回字符ch在字符串中最后一次出现的位置。,41,09 十月 20223)public int indexOf,5)public int indexOf(String str) 返回子串str在字符串中第一次出现的位置。6)public int lastIndexOf(String str) 返回子串str在字符串中最后一次出现的位置。,2022年11月4日星期五,42,5)public int indexOf(String st,2022年11月4日星期五,7)public int indexOf(char ch,int fromIndex) 返回字符ch在字符串中fromIndex位置以后第一次出现的位置。8)public lastIndexOf(char ch ,int fromIndex) 返回字符ch在字符串中fromIndex位置以后最后一次出现的位置,43,09 十月 20227)public int indexOf,2022年11月4日星期五,9)public int indexOf(String str,int fromIndex) 返回子串str在字符串中fromIndex位置后第一次出现的位置。10)public int lastIndexOf(String str,int fromIndex) 返回子串str在字符串中fromIndex位置后最后一次出现的位置。,44,09 十月 20229)public int indexOf,2022年11月4日星期五,45,11)public String substring(intbeginIndex) 返回字符串中从beginIndex位置开始的字符子串。12)public String substring(int beginIndex, int endIndex) 返回字符串中从beginIndex位置开始到endIndex位置(不包括该位置)结束的字符子串。,09 十月 20224511)public String s,2022年11月4日星期五,46,13)public String contact(String str) 用来将当前字符串与给定字符串str连接起来。14)public String replace(char oldChar,char newChar) 用来把串中所有由oldChar指定的字符替换成由newChar指定的字符以生成新串。,09 十月 20224613)public String c,15)public String toLowerCase() 把串中所有的字符变成小写且返回新串。16)public String toUpperCase() 把串中所有的字符变成大写且返回新串。,2022年11月4日星期五,47,15)public String toLowerCase(),2022年11月4日星期五,17)public String trim() 去掉串中前导空格和拖尾空格且返回新串。18)public String split(Stringregex) 以regex为分隔符来拆分此字符串。,48,09 十月 202217)public String tri,2022年11月4日星期五,4.4.2 StringBuffer类在字符串处理中,String类生成的对象是不变的,即String中对字符串的运算操作不是在源字符串对象本身上进行的,而是使用源字符串对象的拷贝去生成一个新的字符串对象,其操作的结果不影响源串。,49,09 十月 20224.4.2 StringBuffer类,4.4.3 StringTokenizer类字符串是Java程序中主要的处理对象,在Java.util类包中提供的StringTokenizer(字符串标记)类主要用于对字符串的分析、析取。如提取一篇文章中的每个单词等。,2022年11月4日星期五,50,4.4.3 StringTokenizer类09 十月 20,例题4.9 详见P70,2022年11月4日星期五,51,例题4.9 详见P70 09 十月 202251,运行结果:,2022年11月4日星期五,52,运行结果:09 十月 202252,