《数组与字符串》PPT课件.ppt_第1页
《数组与字符串》PPT课件.ppt_第2页
《数组与字符串》PPT课件.ppt_第3页
《数组与字符串》PPT课件.ppt_第4页
《数组与字符串》PPT课件.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章数组与字符串,学习目标本章要点上机练习习题,学习目标,数组与字符串是Java语言中非常重要且功能强大的对象,其作用渗透到程序设计的各个方面,是读者继续深入学习必不可少的基本知识。本章主要介绍了数组的概念,以及数组函数和向量类,讲解了数组和向量类的使用,还介绍了字符串String类和StringBuffer类,通过示例详细讲解了字符串的常用方法。让读者熟练掌握数组和字符串的特点与使用方法。,本章要点,一维数组和多维数组的概念数组的声明、创建和初始化数组函数的使用String类和StringBuffer类字符串字符串的常用方法,数组,数组作为一种符合数据类型广泛应用于数据运算和图形程序设计中。一维数组与多维数组数组函数的使用向量类应用举例数组与向量类的使用,一维数组与多维数组,数组有一维和多维两种形式,下面将详细介绍两种数组的使用方法。一维数组的声明一维数组的创建数组的初始化多维数组,一维数组的声明,数组是具有相同类型的元素按照顺序组成的一种复合数据类型。通过一个整数下标,可以访问其中的每一个值,下标从0开始排序,如果一个数组的长度为4,那么各元素序号为0、1、2和3。但是在Java中定义数组时候,不允许直接指定数组的大小。,一维数组的声明,根据这个定义,可以得出数组的特点:数组的所有元素是同一类型,各个元素是有顺序的,每个元素通过数组名和数组下标来表示。一维数组的声明格式为:TypearrayName;或者typearrayName;,一维数组的声明,其中,type为该数组的数据类型,可以声明任何类型的数组简单类型或类类型。ArrayName为数组名。,一维数组的声明,上述这种将方括号置于变量名之后可以声明数组的格式,是用于C、C+和Java编程语言的标准格式。有些观点认为这种格式会使声明的格式复杂难懂,因而,Java编程语言允许一种替代的格式,该格式中的方括号位于变量名的左边。,一维数组的声明,这样的结果可以认为类型部分在左,而变量名在右,上述两种格式并存,可以选择任何一种作为习惯的方式。当数组声明的方括号在左边时,该方括号可应用于所有位于其右的变量。,一维数组的创建,Java中所有数据类型都在定义时自动为其分配内存空间,但数组必须在声明后再经过创建数组这一步骤才能使用。创建数组是指在声明数组之后为数组分配内存空间,同时对数组元素进行初始化。创建数组有两种方式:,一维数组的创建,1)使用关键字new创建数组使用关键字new来为一个已经声明的数组分配实际的内存空间。其格式如下:arrayName=newtypearraySize;这里,arraySize是指明数组的实际长度。,一维数组的创建,chararray1=newchar20;这条语句相当于以下两条语句chararray1;array1=newchar20;而对于类类型数组的创建要多理解,一维数组的创建,2)直接指定初始值的方式创建数组除使用关键字new创建数组以外,还可以以赋值的形式创建数组。,一维数组的创建,其格式如下:intI=1,2,3,4,5;这条语句定义了一个包含5个元素的整型数组,同时又指定了元素的初始值,并为其创建了5个元素的存储区。,一维数组的创建,【例4-1】一维数组的声明和创建(光盘:源文件第4章例4-1.txt)。,数组的初始化,数组初始化是保证系统安全的基础,变量绝不能在未初始化的状态下使用。当创建一个数组时,即为数组分配了内存空间,每个元素都被初始化,数值类型的数组元素被自动初始化为0,布尔类型的数组元素被自动初始化为false,引用类型的数组元素被自动初始化为null。,数组的初始化,对数组的初始化也可以在定义数组的同时进行。另一方面,数组元素的范围也是非常重要的,用来指示单个数组元素的下标必须总是从0开始,且保持在合法范围之内大于或等于0,且小于数组长度。任何访问在上述界限之外的数组元素的行为都会引起运行时出错。,数组的初始化,【例4-2】用冒泡排序法将数组中的元素按从小到大的顺序排列(光盘:源文件第4章例4-2.txt)。冒泡排序法将数组中两个相邻的元素进行比较,并总是将小的元素交换到前面。,例4-2运行结果,多维数组,Java并不直接支持多维数组,所以多维数组的声明是通过对一维数组的嵌套来完成的,即使用“数组的数组”的方式来声明多维数组。这里我们首先来看二维数组。,多维数组,1)二维数组一个二维数组的声明格式为:typearrayName;其中,type可以是最低一维数组的类型,arrayName是数组名,最右边的方括号代表最低一维。,多维数组,与一维数组一样,多维数组对数组元素没有分配任何的空间,在声明后,必须使用关键字new来为其分配内存空间,然后才能访问里面的元素。多维数组有以下方法来分配空间。,多维数组,直接分配每一维的空间。必须从最高维开始,由高到低,分别为每一维分配内存空间。2)多维数组Java采用“数组的数组”声明多维数组,使处理多维数组更灵活。多维数组可以不是矩形,多维数组,显然,这种多维数组是“不整齐”的,所以在声明和创建多维数组时候,不一定要指定每一维的元素个数。上述数组yanghui的高维各元素由于包含不同个数的低维元素,所以右边的方括号中实际无法确定某个数值。,多维数组,因此,在多维数组的声明和创建时候,数组最前面的一维或多维必须指定元素的个数,后面的方括号中可以不指定元素个数。以下写法是允许的:intarrayDim=newint3,多维数组,但以下语句是错误的:intarrayDim=newint3intarrayDim=newint2intarrayDim=newint,多维数组,【例4-3】二维数组的使用矩阵相乘(光盘:源文件第4章例4-3.txt)。矩阵A(m,n)和B(n,1)相乘得到矩阵C(m,1),矩阵C的每个元素为Cij=aik*bkj(i=1,2,.,m,j=1,2.,n),例4-3运行结果,数组函数的使用,在系统中很多关于数组的函数可以直接调用,下面将介绍几种常用的数组函数。数组复制System.arraycopy()数组排序Arrays.sort(),数组复制System.arraycopy(),Java语言在System类中提供了一种特殊的方法复制数组,该方法被称作arraycopy()。数组复制的基本格式为:publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength),数组复制System.arraycopy(),【例4-4】数组的复制,将数组a1的前4个元素赋给数组b1(光盘:源文件第4章例4-4.txt)。,数组排序Arrays.sort(),ArraysSort()将数组中的元素按从小到大的顺序排列,结果仍然放在源数组中。【例4-5】将数组a1按升序排列,并显示排序结果(光盘:源文件第4章例4-5.txt)。,类“test4_5”运行结果,向量类,向量类Vector是Java.util包提供的一个工具类,它是允许不同类型元素共存的变长数组,具有比数组更强大的功能。每个向量类的对象都可以表达一个完整的数据系列,同时,向量类还封装了许多有用的方法来操作和处理这些数据。向量类对象所表达的序列元素的个数是可变的,可以使用向量类实现变长数组。,向量类,向量类可为工作的各种元素类型的动态数组提供方法,如类继承关系。,向量类,向量类的构造函数向量类的变量向量类的基本方法,向量类的构造函数,向量类有如下3种构造函数。publicVector():构造一个空向量。publicVector(intinitialCapacity):构造一个具有存储容量的空向量。publicVector(intinitialCapacity,intcapacityInctrment):构造具有存储容量和增加量的空向量。,向量类的变量,向量类包含如下3种变量。protectedintcapacityIncrement:增加量,如为0,则每次需要增加时,缓冲区的大小成倍。,向量类的变量,protectedintelementCount:缓冲区中元素的数量。rotectedObjectelementData:元素被贮存的缓冲区。,向量类的基本方法,下面是向量类中的一些方法,可以参照JavaAPI查看该方法的描述。publicfinalintsize():返回向量中元素的数量。publicfinalbooleancontains(Objectelem):如果指定对象是收集的值,返回真。,向量类的基本方法,publicfinalintindexOf(Objectelem):从起始位置搜索指定的对象,然后将一个索引返回到其中(或,如果元素未找到为-1)。publicfinalsynchronizedObjectelementAt(intindex):在指定的索引中返回元素。,向量类的基本方法,publicfinalsynchronizedvoidsetElementAt(intindex):在指定索引中以指定对象替代指定元素。publicfinalsynchronizedvoidremoveElementAt(intindex):删除指定索引中的元素。,向量类的基本方法,publicfinalsynchronizedvoidaddElement(Objectobj):附加指定对象作为向量的最后元素。publicfinalsynchronizedvoidinsertElementAt(Objectobj,intindex):插入指定对象作为指定索引中的一个元素,上移具有同等或更大索引的所有元素。,应用举例数组与向量类的使用,【例4-6】Vector类的使用(光盘:源文件第4章应用举例MyVector.txt)。,字符串,Java语言将字符串作为对象来处理,字符串及相关操作都被封装在Java.lang包中的String类和StringBuffer类之中。String类StringBuffer类字符串的常用方法应用举例字符串操作的综合应用,String类,String类用于比较两个字符串、查找串中的字符及子串、字符串与其他类型的转换,String类对象的内容初始化后不能改变。String类构造函数字符串的创建,String类构造函数,String类有许多构造函数,下面将介绍主要的5个。publicString(Stringvalue):生成一个空串。publicString(charvalue):生成一个字符数组。,String类构造函数,publicString(charvalue,intstartIndex,intnumChars):生成一个字符串,这个字符串从字符数组value中提取,即从value数组的startIndex位置开始提取字符,共提取numChars个字符组成一个字符串。,String类构造函数,publicString(byteascii,inthiByte):以字节数组形式生成一个字符串,数组中存放字符串中各字符对应的ASCII码。,String类构造函数,publicString(byteascii,inthiByte,intstartIndex,intnumChars):以字节数组形式生成一个字符串,这个字符串从字节数组ascii的startIndex位置开始提取字符,共提取numChars个字符组成一个字符串。,字符串的创建,String类不能派生子类,也就是说String类不能被其他类继承,另外,即使程序中不使用new关键字,Java编译器也能从String类生成一个对象。Strings=”Helloworld!”;,字符串的创建,该语句中没有使用new关键字,但是仍然生成了一个字符串对象s。这也是String类的特点。在Java语言中,可以隐式或显式地创建字符串对象。,字符串的创建,1)隐式地创建字符串对象对于隐式地创建字符串对象,可以使用双引号来设置一个String语句,Java将自动创建字符串对象。,字符串的创建,2)显式地创建字符串对象3)使用已创建的字符串创建另一个字符串4)由字符数组创建一个字符串对象5)提取字符数组的部分字符创建一个字符串对象,StringBuffer类,StringBuffer类用于内容可以改变的字符串,可将其他类型的数据增加、插入到字符串中,也可翻转字符串的内容。通过类StringBuffer的构造方法可生成可变的字符串对象。格式如下:,StringBuffer类,SingstrObj=newStringBuffer();StringstrObj=newStringBuffer(intnum);StringstrObj=newStringBuffer(Stringstr);参数num为字符串缓冲区的初始长度,参数str给出字符串的初始值。,字符串的常用方法,下面分别对字符串的常用方法进行介绍。Length方法Equals方法equalslgnorCase方法toUpperCase和toLowerCase方法,字符串的常用方法,Replace方法Contact方法compareTo和compareTolgnoreCase方法Substring方法publicintindexOf方法,Length方法,使用String类中的length()方法可以获取一个字符串的长度。,Equals方法,字符串对象调用String类中的publicBooleanequals(Strings)方法,比较当前字符串对象的实体是否与参数指定的字符串s的实体相同。,equalslgnorCase方法,比较当前字符串对象与参数指定的字符串是否相同,比较时可以忽略大小写。,toUpperCase和toLowerCase方法,将字符串中的字母全部转化为大写、小写字母。toUpperCase()可将参数中的字母全部转化为大写,toLowerCase()可将参数中的字母全部转化为小写。,Replace方法,Replace可将给定字符串中出现的所有特定字符oldChar替换成指定字符newChar,形成新的字符串。,Contact方法,contact(StringotherStr)可将当前字符串和给定字符串otherStr字符串连接起来,形成新的字符串。,compareTo和compareTolgnoreCase方法,字符串对象可以使用String类中的publiccompareTo(Strings)方法按字典顺序与参数s指定的字符串比较大小。如果当前字符串与s相同,该方法返回0;如果当前字符串对象大于s,该方法返回正值;如果小于s,该方法返回负值。,compareTo和compareTolgnoreCase方法,按字典顺序比较两个字符串还可以使用publiccompareTolgnoreCase(Strings)方法,该方法可以忽略大小写。,Substring方法,substring(intbeginIndex)可从开始位置beginIndex开始一直取值到最后一个字符,形成新的字符串。subString(intbeginIndex,intendIndex)从开始位置beginIndex开始一直取到结束位置endIndex的字符,形成新的字符串。,publicintindexOf方法,要搜索指定字符串出现的位置,通常有以下几种方法。publicintindexOf(Strings):字符串调用该方法从当前字符串的头开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回值为-1。,publicintindexOf方法,publicintindexOf(Strings,intstarpoint):字符串调用该方法从当前字符串的starpoint处开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回值为-1。,publicintindexOf方法,publicintlastIndexOf(Strings):字符串调用该方法从当前字符串的头开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回值为-1。,publicintindexOf方法,publicintlastIndexOf(Strings,intstarpoin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论