Java04数组字符串.ppt_第1页
Java04数组字符串.ppt_第2页
Java04数组字符串.ppt_第3页
Java04数组字符串.ppt_第4页
Java04数组字符串.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第4章数组与字符串,陆雪松生物医学工程学院,2020年6月9日,第4章数组与字符串,2of31,主要内容,数组字符串,2020年6月9日,第4章数组与字符串,3of31,数组是一种复合数据类型,代表一组同类型的变量。数组是一种特殊的对象。从存储方式来看,数组所代表的变量按顺序连续存放,数组本身使用一个标识符来定义,称为数组名。所代表的每一个变量称为数组元素,数组元素在内存中所处的位置称为下标。数组的长度是指数组中的元素个数。数组也遵守一般变量的先定义后使用的原则。,数组的概念,2020年6月9日,第4章数组与字符串,4of31,数组举例,记录一个班的10名同学的数学成绩定义10个变量:floatscore1,score2,score10分别存放每个同学的数学成绩定义1个数组变量:score10其中,score.length=10每个元素为:score0,score1,score8,score9数组为scorescorei(i=0,9)类型为float,2020年6月9日,第4章数组与字符串,5of31,一维数组,定义格式类型名数组名=初值;或类型名数组名=初值;举例:intai;/定义一个整数数组floatscore;/定义一个float数组floatscore;Objectao;/定义一个Object数组Stringnames;/定义一个字符串数组byterowvector,colvector,matrix;/分别定义两个字节数组和一个字节数组的数组MyClassamc;/定义一个带参数的对象数组,2020年6月9日,第4章数组与字符串,6of31,一维数组的初始化,数组的定义中并不为数组元素分配内存静态初始化使用一对大括弧“”加数据来对数组进行初始化举例:intai=1,2,3,4,5,6,7,8,9,10;/数组ai有10个数组元素,即ai.length为10,每个元素类型为intcharac=n,o,t,a,S,t,r,i,n,g;/数组ac有12个数组元素,即ac.length为12,每个元素类型为charStringcountryNames=中国,美国,法国;/数组countryNames有3个数组元素,即countryNames.length为3,每个元素类型为StringMyClassamc=newMyClass(),newMyClass(),newMyClass();/数组amc有3个数组元素,即amc.length为3,每个元素类型为MyClassColorcolorPalette=Color.RED,Color.GREEN,Color.BLUE;/数组colorPalette有3个数组元素,即colorPalette.length为3,每个元素类型为Color,2020年6月9日,第4章数组与字符串,7of31,一维数组的初始化,动态初始化使用构造对象的方法(new运算符)来初始化数组举例:intai=newint10;/数组ai有10个数组元素intlength=35;floatscore=newfloatlength;/数组score有35个数组元素StringcountryNames=newString中国,美国,法国;/数组countryNames有3个数组元素,即countryNames.length为3,每个元素类型为String,2020年6月9日,第4章数组与字符串,8of31,注意:对数组进行动态初始化时,只有当对每个元素分配了内存空间后,才可以使用。例如:执行完语句StringcountryNames=newString3后,还需对其三个元素分别初始化,countryNames0=“中国”之后才能使用,否则会出现空指针异常。,一维数组的初始化,2020年6月9日,第4章数组与字符串,9of31,一维数组的引用,举例:for(inti=0;iai.length;i+)System.out.println(aii*aii);,2020年6月9日,第4章数组与字符串,10of31,一维数组的完整例子,【例4-1】模拟体育比赛中的胜、平和负3种状态10000次,统计并显示每种状态的次数。(int)(Math.random()*10000)%3【例4-2】查找数组中是否存在某个数值。关键代码:for(intx:arrayOfInts),2020年6月9日,第4章数组与字符串,11of31,二维数组,定义格式类型名数组名=初值;或类型名数组名=初值;或类型名数组名=初值;举例:intai;intai;intai;,2020年6月9日,第4章数组与字符串,12of31,二维数组的初始化,二维数组的定义中不为数组元素分配内存,分静态初始化和动态初始化举例:1:intai1=newint33;2:intai2=3:1,2,3,4,5,6,7,8,94:;5:intai3=newint3;6:ai30=newint3;7:ai31=newint2;8:ai32=newint1;9:intai4=10:1,2,3,4,5,611:;12:intai5=13:1,2,null,3,4,514:;,2020年6月9日,第4章数组与字符串,13of31,二维数组的引用,举例:for(inti=0;iai4.length;i+)for(intj=0;jai4i.length;j+)System.out.println(ai4ij*ai4ij);,2020年6月9日,第4章数组与字符串,14of31,二维数组的完整例子,【例4-4】输出如下所示的杨辉三角形。三角形中的每一行除最左和最右为1之外,中间的每一行每一列的值=上一行当前列的值+上一行前一列的值。,2020年6月9日,第4章数组与字符串,15of31,数组与算法,java.util.Arrays类和java.lang.System类中提供了数组的初始化、拷贝、克隆、比较、查找与排序等方法。1.初始化方法:System.fill(a,val);其中,a为要初始化的数组,val为初始化值。2.拷贝方法:Arrays.arraycopy(src,srcPos,dest,destPos,length);其中,src为原始数组,srcPos为原始数组起始下标,dest为目标数组,destPos为目标数组起始下标,length为要拷贝的元素个数。3.克隆方法:a.clone();其中,a为数组,返回值为目标数组。“”表示数组引用,而clone表示复制。,2020年6月9日,第4章数组与字符串,16of31,数组与算法,4.比较方法:Arrays.equals(a1,a2);其中,a1、a2为要比较的两个数组,“”表示为同一个引用,而equals表示元素相等。5.数组排序方法:Arrays.sort(a);其中,a为待排数组。6.查找方法:Arrays.binarySearch(a,key);其中,a为待查数组,key为查找关键值,返回值为查找到的数组下标,如果未找到,返回-1。7.元素批输出方法:Arrays.toString(a);其中,a为待输出数组,返回值为数组元素构成的字符串。如果直接输出a的话,得到的只是a的内存标识号,而不是所有元素值。,2020年6月9日,第4章数组与字符串,17of31,数组举例,【例4-7】数组与算法演示。,2020年6月9日,第4章数组与字符串,18of31,数组举例,【例4-14】对一组数据进行分析。原始数据如下表6-1所示:表6-1W县2003-2006年苹果产量表(单位:万担)要求预测2007年的产量,采用的算法:算术平均:几何平均:增长速度:发展速度:,2020年6月9日,第4章数组与字符串,19of31,字符串是指用一对双引号将若干个字符括起来组成的字符序列。Java语言中的字符串表面上是字符序列,内部却是使用对象来表示的,不能把字符串与字符数组等同起来。包括定长字符串和可变长字符串有时为了提高存取效率,采用定长字符串,使用String类的对象;有时则为了修改的灵活性,采用可变长字符串,使用StringBuffer类的对象。,字符串的基本概念,2020年6月9日,第4章数组与字符串,20of31,定长字符串的定义格式,String变量名=;其中,为由一对双引号()括起来的字符序列。String()构造一个空字符串String(Stringoriginal)由原始字符串构造新的字符串String(charvalue)由字符数组构造字符串String(charvalue,intoffset,intcount)由字符数组的一部分构造字符串举例:Stringword=月随碧山转,水合青山流。杳如星河上,但觉云林幽。;Strings=newString();StringfirstName=newString(杰克);charasc=伦,敦Stringlastname=newString(asc);Stringname=newString(firstName+lastname);,2020年6月9日,第4章数组与字符串,21of31,定长字符串的引用格式,对于字符串文字量可以直接使用,而一旦定义好一个字符串变量,就可以按名存取。String类提供了一个方法length()取得字符串的长度,即它所包含的字符个数。比如上例中的s.length()为0,name.length()为5等。,2020年6月9日,第4章数组与字符串,22of31,定长字符串的处理算法,“+”运算符,不但可以将两个字符串拼接,还可以将其它类型的值与字符串拼接,得到一个新的字符串。String类的常用方法,2020年6月9日,第4章数组与字符串,23of31,定长字符串举例,【例4-8】定长字符串处理方法综合演示。【例4-9】判断字符串是否为回文。,2020年6月9日,第4章数组与字符串,24of31,可变长字符串,举例:对于可变长字符串DotSawI,其长度为9,而容量为17。,2020年6月9日,第4章数组与字符串,25of31,可变长字符串的定义格式,StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。StringBuffer(intcapacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。StringBuffer(Stringstr)构造一个字符串缓冲区,并将其初始化为指定的字符串内容。举例:StringBuffers1=newStringBuffer();StringBuffers2=newStringBuffer(28);StringBuffers3=newStringBuffer(地球只有一个,请爱惜她!);,2020年6月9日,第4章数组与字符串,26of31,可变长字符串的引用格式,StringBuffer类提供length()方法计算长度,capacity()方法计算容量。,2020年6月9日,第4章数组与字符串,27of31,可变长字符串的处理算法,StringBuffer类的常用方法,2020年6月9日,第4章数组与字符串,28of31,可变长字符串举例,【例4-10】可变长字符串处理方法综合演示。【例4-11】字符串、字符数组的转换。【例4-12】从字符串中提取单词。,2020年6月9日,第4章数组与字符串,29of31,可变长字符串举例,【例4-13】字符串四则运算表达式的计算。算法简述:StringTokenizer类是java.util包中提供的一个解析字符串的类,其方法如下:StringTokenizer(Stringstr,Stringdelim)为指定字符串构造一个StringTokenizer类的对象。其中,str为原始字符串,delim参数中的字符都是起分隔标记作用的分隔符序列。分隔符字符本身不作为标记。bo

温馨提示

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

评论

0/150

提交评论