




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数组与字符串,数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标,来使用数组中的数据。下标从0开始排序。51声明数组声名数组包括数组的名字、数组包含的元素的数据类型。声明一维数组有下列两种格式:数组元素类型数组名字:inta;数组元素类型数组名字;inta;声明2维数组有下列两种格式:数组元素类型数组名字;inta;数组元素类型数组名字;inta;例如:floatboy;doublegirl;charcat;chardog;floata;doubleb;chard;chardog;将来数组boy的元素可以存放float型数据。数组的元素的类型可以是Java的任何一种类型。假如已经定义了一个People类,那么可以声明一个数组:Peoplechina;Peoplechina;/People类的对象数组将来数组china元素可以存放People类型数据,即People类创建的对象。,52创建数组,声明数组仅仅是给出了数组名字和元素的数据类型,要想真正地使用数组还必须为它分配内存空间,即创建数组。在为数组分配内存空间时必须指明数组的长度。为数组分配内存空间的格式如下:数组名字=new数组元素的类型数组元素的个数;例如:boy=newfloat7;声明数组和创建数组可以一起完成,例如:floatboy=newfloat7;二维数组和一维数组一样,在定义之后必须用new运算符分配内存空间,例如:intmytwo;mytwo=newint35;或intmytwo=newint34;注:和C语言不同的是,Java允许使用int型变量指定数组的大小,例如:intsize=30;doublenumber=newdoublesize;size=20;/我们现在提到的数组是定长的,53数组元素的使用,一维数组通过下标符访问自己的元素,如boy0、boyll等。需要注意的是下标从0开始,因此,数组若是7个元素,下标到6为止,如果使用了如下语句将发生异常。boy7=384.98f;二维数组也通过下标符访问自己的元素,如a01,a12等。需要注意的是下标从0开始,比如声明创建了一个二维数组a:inta=newint23;a00=0;那么第一个下标的变化范围从0到1,第二个下标变化范围从0到2。如果使用了如下语句将发生异常。a21=38;a03=90;例子:shuzu1.java,importjava.applet.*;importjava.awt.*;publicclassshuzu1extendsAppletfloata;publicvoidinit()a=newfloat5;a0=23.9f;a1=34.9f;a2=45f;a3=56.98f;a4=100f;publicvoidpaint(Graphicsg)g.drawString(a0=+a0+a1=+a1+a2+a2+a3=+a3+a4=+a4,12,12);注:有一个重要的表示数组长度的(即元素的个数)格式。例如创建了floata=newfloat6,则a.length的值为6。,54数组的初始化,创建数组后,系统会给每个数组元素一个默认的值,如float型是0.0。我们在声明数组时,同时也还可以给数组的元素一个初始值,如:floatboy=12.3f,23.89f,2.0f,23f,578.98f;上述语句相当于:floatboy=newfloat5;boy0=12.3f;boy1=23.89f;boy2=2.0f;boy3=23f;boy4=578.98f;例如:StringS=we,are,hello,123,who?;,55字符串,Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。1字符串常量:如你好,1234.987,weqweo。”a”a2声明字符串:StringS;3创建字符串:使用String类的构造方法。例如:S=newString(“Wearestudents);也可写成:S=Wearestudents;声明和创建可用一步完成:StringS=newString(“Wearestudents);或StringS=“Wearestudents;也可以用一个已创建的字符串创建另一个字符串,如:Stringtom=newString(S);相当于:Stringtom=Wearestudents;,String类还有两个较常用构造方法。(1)String(chara):用一个字符数组a创建一个字符串对象,例如:chara=b,o,y;Strings=newString(a);上述过程相当于:Strings=boy;(2)String(chara,intstartIndex,intcount):提取字符数组a中的一部分字符创建一个字符串对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数,例如:chara=s,t,b,u,s,n;StringS=newString(a,2,3);上述过程相当于:StringS=bus;551怎样获取字符串的长度使用String类中的length()方法可以获取一个字符串的长度,如:Strings=“wearestudents”,tom=“我们是学生”;intnl,n2;n1=s.length();n2=tom.length();那么n1的值是15,n2的值5。字符串常量也可以使用length()获得长度,如”你的爱好”.length()的值是4。,字符串比较,1equals方法字符串对象调用String类中的publicbooleanequals(Strings)方法,比较当前字符串对象的实体是否与参数指定的字符串s的实体相同,如:Stringtom=newString(wearestudents);Stringboy=newString(Wearestudents);Stringjerry=newString(wearestudents);tom.equals(boy)的值是false,tom.equals(jerry)的值是true。注:tom=jerry的值是false。因为字符串是对象,tom、jerry是引用。2equalsIgnoreCase方法equalsIgnoreCase字符串对象调用publicbooleanequalsIgnoreCase(Strings)方法,比较当前字符串对象与参数指定的字符串s是否相同,比较时忽略大小写,如:Stringtom=newString(ABC),Jerry=newString(abc);tom.equalsIgnoreCase(Jerry)的值是true。,0 x54c78,0 xAb98,tom,jerry,wearestudents,wearestudents,字符串对象调用publicbooleanstartsWith(Strings)方法,判断当前字符串对象的前缀是否是参数指定的字符串s,如:endsWith(Strings)Stringtom=220302620629021,jerry=21079670924022;tom.startsWith(220)的值是true;jerry.startsWith(220)的值是false。如:例题starwith.java4regionMatches方法字符串调用publicbooleanregionMatches(intfirstStart,Stringother,intotherStart,intlength)方法,从当前字符串参数firstStart指定的位置开始处,取长度为length的一个子串,并将这个子串和参数other指定的一个子串进行比较,其中,other指定的子串是从参数otherStart指定的位置开始,从other中取长度为length的一个子串。如果两个子串相同该方法就返回true,否则返回false。使用该方法的重载方法publicbooleanregionMatches(booleanb,intfirstStart,Stringother,intotherStart,intlength)可以通过参数b决定是否忽略大小写,当b取true时,忽略大小写。在下面的例子rematch中,我们判断:个字符串中共出现了几个en。pareTo、compareToIgnoreCase方法字符串对象可以使用String类中的publicintcompareTo(Strings)方法,按字典序与参数s指定的字符串比较大小。如果当前字符串与s相同,该方法返回值0;如果当前字符串对象大于s,该方法返回正值;如果小于s,该方法返回负值。例如:Stringstr=abcde;pareTo(boy)小于0;pareTo(aba)大于0;pareTo(“abcde)等于0。按字典序比较两个字符串还可以使用publicintcompareToIgnoreCase(Strings)方法,该方法忽略大小写。,下面的例子54将一个字符串数组按字典序重新排列。553字符串检索1搜索指定字符串出现的位置publicintindexOf(Strings):字符串调用该方法从当前字符串的头开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回的值是1。publicintindexOf(Strings,intstartpoint):字符串调用该方法从当前字符串的startpoint位置处开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。publicintlastIndexOf(Strings):字符串调用该方法从当前字符串的头开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。publicintlastIndexOf(Strings,intstartpoint):字符串调用该方法从当前字符串的starpoint位置处开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。例如:Stringtom=Iamagoodcat;tom.indexOf(a);/值是2tom.indexOf(good,2);/值是7tom.indexOf(a,7);/值是13tom.indexOf(w,2);/值是-1,2搜索指定字符出现的位置publicintindexOf(charc):字符串调用该方法从当前字符串的头开始检索字符char,并返回首次出现char的位置。如果没有检索到字符串s,该方法返回的值是-1。publicintindexOf(charc,intstartpoint):字符串调用该方法从当前字符串的startpoint位置处开始检索字符char,并返回首次出现char的位置。如果没有检索到字符串s,该方法返回的值是-1。publicintlastIndexOf(charc):字符串调用该方法从当前字符串的头开始检索字符char,并返回最后出现char的位置。如果没有检索到字符char,该方法返回的值是-1。publicintlastIndexOf(charc,intstartpoint):字符串调用该方法从当前字符串的startpoint位置处开始检索字符char,并返回最后出现char的位置。如果没有检索到字符char,该方法返回的值是-1。554字符串的截取publicStringsubstring(intstartpoint):字符串对象调用该方法获得一个当前字符串的子串,该子串是从当前字符串的startpoint处截取到最后所得到的字符串。publicStringsubstring(intstart,intend):字符串对象调用该方法获得一个当前字符串的子串,该子串是从当前字符串的start处截取到end处所得到的字符串,但不包括end处所对应的字符。例如:Stringtom=Ilovetom;Strings=tom.substring(2,6);s是love,555替换,publicStringreplace(charoldChar,charnewChar):字符串对象s调用该方法可以获得一个字符串对象,这个串对象是用参数newChar指定的字符替换s中由oldChar指定的所有字符而得到的字符串。publicStringreplaceAll(Stringold,Stringnew):字符串对象s调用该方法可以获得一个字符串对象,这个串对象是通过用参数new指定的字符串替换s中由old指定的所有字符串而得到的字符串。publicStringtrim():一个字符串s通过调用方法trim()得到一个字符串对象,该字符串对象是s去掉前后空格后的字符串。例如:Strings=Imisttheep;Stringtemp=s.replace(t,s);temp是Imisssheep。StringS=“Iamastudent;Stringtemp=S.trim();temp是“Iamastudent”,5.5.6字符串转化为相应的数值,1转化为整型java.lang包中的Integer类调用其类方法:publicstaticintparseInt(StringS)可以将数字格式的字符串,如12387,转化为int型数据。例如:intx;Strings=6542;x=Integer.parseInt(s);类似地,使用java.lang包中的Byte、Short、Long类调相应的类方法:publicstaticbyteparseByte(Strings)publicstaticshortparseShort(Strings)publicstaticlongparseLong(Strings)可以将数字格式的字符串,转化为相应的基本数据类型。2转化为Float型或Double型java.lang包中的Float类调用其类方法:publicstaticfloatparseFloat(Strings)可以将“数字”格式的字符串,如12387.8976,转化为Float型数据。例如:floatn=Float.parseFloat(12387.8976);或Strings=newString(12387.8976);floatn=Float.parseFloat(s);,类似地,使用java.lang包中的Double类调相应的类方法:publicstaticdoubleparseDouble(Strings)可以将数字格式的字符串,转化为Double型数据。另外,还可以使用Float类的类方法:publicstaticfloatvalueOf(Strings)将如12334.870字符串转化为Float型数据,例如:floatn=Float.valueOf(12334.870).floatValue();使用Double类的类方法:publicstaticDoublevalueOf(StringS)将如12334.870字符串转化为Double型数据,例如:doublen=Double.valueOf(12334.870).doubleValue();现在我们举一个求若干个数的平均数的例子valuof,若干个数从键盘输入。这是一个应用程序,应用程序中的main方法中的参数args能接受你从键盘键入的字符串。首先应编译上述源程序:C:2000iavacvaluof.java编译通过后,你要使用解释器java.exe来执行字节码文件:C:2000javavaluof123.7823324.9213214(回车)这时,程序中的args0、arg1、arg2分别得到字符串123.78、23324.9和213214。在源程序中我们再将这些字符串转化为数值进行运算,得到所需的结果。,557数值转化为字符串,可以使用String类的下列类方法:publicstaticStringvalueOf(byten)publicstaticStringvalueOf(intn)publicstaticStringvalueOf(longn)publicstaticStringvalueOf(floatn)publicstaticStringvalueOf(doublen)将形如123,1232.98等数值转换成字符串,如:Stringstr=String.valueOf(12313.9876);floatx=123.987f;Stringtemp=String.valueOf(x);,5.6对象的字符串表示,在子类中我们讲过,所有的类都默认是java.lang包中的Object类的子类或间接子类。Object类有一个public方法toString(),一个对象通过调用该方法可以获得该对象的字符串表示。importjava.util.Date;importjava.awt.*;publicclasstoStrpublicstaticvoidmain(Stringargs)Datedate=newDate();Buttonbutton=newButton(确定);System.out.println(date.toString();System.out.println(button.toString();,5.7用StringTokenizer类分析字符串,有时我们需要分析字符串将字符串分解成可被独立使用的单词,这些单词叫做语言符号,如:对于字符串wearestudents;如果我们把空格作为这个字符串中的分隔符那么该字符串有3个单词(语言符号),而对于字符串we,are,students如果我们把逗号作为该字符串的分隔符,那么该字符串有3个单词。当我们分析一个字符串并将字符串分解成可以被独立使用的单词,可以使用java.util包中的StringTokenizer类,该类有两个常用的构造方法:StringTokenizer(Strings)为字符串s构造一个分析器。使用默认的分隔符集合,即空格符(若干个空格被看做一个空格)、换行符、回车符、Tab符、进纸符。StringTokenizer(Strings,Stringdelim)为字符串s构造一个分析器。参数delim中的字符被作为分隔符。例如:StringTokenizerfenxi=newStringTokenizer(wearestudents);StringTokenizerfenxi=newStringTokenizer(we,are;students,”,;);我们把一个StringTokenizer对象称作一个字符串分析器。一个分析器可以使用nextToken()方法逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将在字符串中获得下一个语言符号。通常用while循环来逐个获取语言符号,为了控制循环,我们可以使用StringTokenizer类中的hasMoreTokens()方法,只要字符串中还有语言符号,该方法就返回true,否则返回false。另外我们还可以调用countTokens()方法得到字符串一共有多少个语言符号。下面是一个应用程序strtoken,分析字符串,分别输出字符串的单词,并统计出单词个数。,strtoken.javaimportjava.util.*;publicclassstrtokenpublicstaticvoidmain(Stringargs)Strings=IamGeng.X.y,sheismygirlfriend;StringTokenizerfenxi=newStringTokenizer(s,);/空格和逗号作为分隔符intnumber=fenxi.countTokens();while(fenxi.hasMoreTokens()Stringstr=fenxi.nextToken();System.out.println(str);System.out.println(还剩+fenxi.countTokens()+个单词);System.out.println(s中共有单词:+number+个);,58Character类,当处理字符串时,Character类中的一些类方法是很有用的,这些方法可以用来进行字符分类,比如判断一个字符是否是数字字符或改变一个字符大小写等。publicstaticbooleanisDigit(charch)如果ch是数字字符,方法返回true,否则返回false。publicstaticbooleanisLetter(charch)如果ch是字母,方法返回true,否则返回false。publicstaticbooleanisLetterOrDigit(charch)如果ch是数字字符或字母方法,返回true,否则返回false。publicstaticbooleanisLowerCase(charch)如果ch是小写字母,方法返回true,否则返回false。publicstaticbooleanisUpperCase(charch)如果ch是大写字母,方法返回tr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 贵州公务员考试笔试试题附答案
- 糯米白醋王行业深度研究分析报告(2024-2030版)
- 2025年 东阳市市级机关遴选考试笔试试题附答案
- 中国电阻网络行业市场深度评估及投资策略咨询报告
- 农业种植项目可行性报告
- 2025年中国晶振膜厚控制仪行业市场发展前景及发展趋势与投资战略研究报告
- 管道燃气安全评估报告
- 2025年中国丁腈橡胶混炼胶行业市场发展前景及发展趋势与投资战略研究报告
- 中国健康服务产业园区市场深度分析及投资战略咨询报告
- 2025-2030年中国变压器的项目投资可行性研究分析报告
- 保险业务员分级考试试题及答案
- 2024统编版七年级道德与法治下册期末测试卷(含答案)
- 酒店经销商合同协议书
- 转让钓场合同协议书
- 医院感染教学课件
- 某市人民医院装修工程项目可行性研究报告
- 【滇人版】《信息技术》四年级第4册 第1课《搜索引擎》课件
- 叉车考试试题模拟100题及答案
- 《全球教育资源库》课件
- 2025年中考生物模拟测试卷及答案
- 高血压的治疗和护理
评论
0/150
提交评论