JAVA教程-字符和字符串_第1页
JAVA教程-字符和字符串_第2页
JAVA教程-字符和字符串_第3页
JAVA教程-字符和字符串_第4页
JAVA教程-字符和字符串_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

字符和字符串Java平台三个用于处理字符数据的类:Character此类的实例可以包含单个字符值。还定义了一些可以用于操作和检查字符数据的简便方法String此类用于处理由多个字符组成的不可改变的数据。StringBuffer此类用于存储和操作由多个字符组成的可改变的数据。一.字符Character类型的对象是单个字符Character类型对象的创立:例:Charactera=newCharacter(‘a’);注:a为Character类型的对象名,指向存放字符‘a’的引用当需要使用对象时,可用Character对象代替原始的Char类型的变量例:将一个字符值传递给会改变此值的方法,或在将字符值放进一个需要对象的数据结构〔比方向量〕例如程序CharacterDemo:

publicclassCharacterDemo{

publicstaticvoidmain(Stringargs[]){

Charactera=newCharacter(‘a’);

Charactera2=newCharacter(‘a’);

Characterb=newCharacter(‘b’);

intdifference=apareTo(b);

if(difference==0){

System.out.println(“aisequaltob.”);

}elseif(difference<0){

System.out.println(“aislessthanb.”);

}elseif(difference>0){

System.out.println(“aisgreaterthanb.”);

}

System.out.println(“ais”+((a.equals(a2))?“equal”:“notequal”)

+“toa2.”);

System.out.println(“Thecharacter”+a.toString()+“is”

+(Character.isUpperCase(a.charValue())?“upper”:“lower”)

+“case.”);

}

}

这个程序的输出:

aislessthanb.

aisequaltoa2.

Thecharacteraislowercase.Character类提供的构造器Character〔char〕Character类唯一的构造器,Character对象一旦创立,它包含的值就不能改变Character类中的类方法compareTO(Character)比较两个字符对象包含的值,返回一个整数值

intdifference=apareTo(b)a为此方法所在的对象b为此方法的参数

equals(object)比较当前对象包含的值与参数对象包含的值,如果两个对象包含的值相等,返回ture例:a.equals(a2)toString()

将此对象转换为字符串,产生的字符串的长度为一个字符,它包含此字符对象包含的值例:Charactera=newCharacter(‘a’);System.out.println(a.toString());

输出结果为acharValue()

此方法以原始char值的形式返回此字符对象包含的值

booleanisUpperCase(char)

此方法判断一个原始char值是否是大写字母

例:判断程序中语句的返回值

Character.isUpperCase(a.charValue())

输出为:false

booleanisLowerCase(char)

判断指定的原始char值是否为小写chartoUpperCase(char)chartoLowerCase(char)

返回指定的原始char值大写或小写形式booleanisLettter(char)booleanisDigit(char)booleanisLetterOrDigit(char)

分别判断指定的原始char值是否是字母,数字,或者属于字母或数字booleanisWhiteSpace(char)根据java平台判断指定的原始char值booleanisSpaceChar(char)根据Unicode标准判断指定的原始char值是否是空字节booleanisJavaIdentifierStart(char)booleanisJavaIdentifierPart(char)分别判断指定的原始char值是否可以是合法标识符的第一个字符,或者合法标识符的一局部char与Character的区别:★char为字符型数据,声明变量形式为

charm;

表示m为字符型变量,存放一个字符,变量m即代表该字符常量★Character为引用型数据中的类。定义变量后,变量名指向的是所赋值的引用,即地址,而不是值的本身。二、字符串和字符串缓冲区〔一〕两个类String和StringBuffer字符串:有多个字符组成的字符数据两个类的差异:String用于其值不能改变的字符串StringBuffer用于将被修改的字符串字符串缓冲区通常用于动态地构造字符数据注:字符串是常量,比使用字符串缓冲区更高效,且字符串可共享,所以只要可能就使用字符串。例如程序StringDemo:

publicclassStringsDemo{

publicstaticvoidmain(String[]args){

Stringpalindrome=“DotsawIwasTod”;

intlen=palindrome.length();

StringBufferdest=newStringBuffer(len);

for(inti=(len-1);i>=0;i--){

dest.append(palindrome.charAt(i))

}//append方法将参数指定的字符添加到dest中System.out.println(dest.toString());

}

}

输出:

doTsawIwastoDString和StringBuffer类的功能:

1、创立字符串和字符串缓冲区

2、使用访问器方法得到关于字符串和字符串缓冲区的信息

3、修改字符串缓冲区

〔二〕创立字符串和字符串缓冲区字符串:(1)字符串直接值〔双引号〕Stringpalindrome=“DotsawIwasTod”;(2)使用new关键字和构造器允许使用不同的数据源提供字符串的初始值如:字符数组、字节数组或字符串缓冲区String类的构造器:String()——创立一个空字符串String(byte[])String(byte[],int,int)String(byte[],int,int,String)String(byte[],String)——创立一个字符串,值由一个字节数组的内容设置。两个整数参数分别设置用作初始值的子数组的偏移量和长度,String参数指定将字节转换为字符所用的字符编码String(char[])String(char[],int,int)——字符串的值由一个字符数组的内容设置。两个整数参数分别设置用作初始值的子数组的偏移量和长度

String(String)——字符串的值由另一个字符串设置。它创立两个相同的字符串,不建议使用String(StringBuffer)——字符串的值由一个字符串缓冲区设置例:从一个字符数组创立字符串char[]helloArray={‘h’,’e’,’l’,’l’,’o’};helloString=newString(helloArray);System.out.println(helloString);此代码片断的最后一行显示:hello字符串缓冲区:必须使用new操作符和构造器三个构造器:StringBuffer——创立一个空的字符串缓冲区,初始容量是16个字符StringBuffer(int)——创立一个空的字符串缓冲区,它具有指定的初始容量StringBuffer(String)——创立一个字符串缓冲区,值由指定的String初始化。容量是原始字符串的长度加16例如:StringsDemo程序中:Stringpalindrome=“DotsawIwasTod”;

intlen=palindrome.length();

StringBufferdest=newStringBuffer(len);

上例创立了一个由dest引用的字符串缓冲区,初始容量等于由palindrome引用的字符串的长度,〔三〕得到字符串或字符串缓冲区的长度访问器方法:用于获取关于对象的信息的方法〔1〕length方法——返回字符串或字符串缓冲区中包含的字符数〔2〕capacity方法〔仅用于StringBuffer类〕——返回分配给此字符串缓冲区的空间量,而不是被使用的空间量例如1:Stringpalindrome=“DotsawIwasTod”;

intlen=palindrome.length();

代码执行后,len等于17

例如2:StringsDemo程序中由dest引用的字符串缓冲区的长度在循环的每次迭代中加1,但它的容量保持不变012345678910111213141516

Length()=9capacity()=17*字符串缓冲区的长度是它包含的字符数,容量是已分配给它的字符空间量*String类没有capacity方法,因为字符串不能被改变

DotsawI↑↑〔四〕通过索引从字符串或字符串缓冲区得到字符使用chatAt访问器方法

第一个字符的索引为0,最后一个字符的索引为length()-1StringanotherPalindrome=“Niagara.Oroaragain!”;CharaChar=anotherPalindrome.chatAt(9);

索引从0开始,所以索引9位置上的字符是“O”cch

0123456789101112131415161718192021charAt(0)charAt(9)charAt(length()-1)Niagara.Oroaragain!要从字符串或字符串缓冲区中得到多个字符,可以使用substring方法substring方法:Stringsubstring(int)Stringsubstring(int,int)——返回一个子字符串第一个整数参数指定第一个字符的索引,第二个整数参数是最后一个字符的索引减1.假设无第二个参数,子字符串扩展到原始字符串的末尾例如:StringanotherPalindrome=“Niagara.Oroaragain!”;Stringroar=anotherPalindrome.substring(11,15);roar〔五〕在字符串中搜索字符或子字符串访问器方法:indexOf和lastIndexOf——返回搜索的字符或子字符串在字符串中的位置*indexOf方法从字符串的开头向前搜索*lastIndexOf方法从字符串的末尾向后搜索String类中的indexOf和lastIndexOf方法intindexOf(int)intlastIndexOf(int)——返回指定的字符第一次〔最后一次〕出现的位置的索引intindexOf(int,int)intlastIndexOf(int,int)——从指定的索引开始向前〔向后〕搜索,返回指定的字符第一次〔最后一次〕出现的位置的索引intindexOf(String)intlastIndexOf(String)——返回指定的字符串第一次〔最后一次〕出现的位置的索引intindeOf(String,int)intlastIndexOf(String,int)——从指定的索引开始向前〔向后〕搜索,返回指定的字符串第一次〔最后一次〕出现的位置的索引***StringBuffer类不支持indexOf和lastIndexOf方法,假设要使用这些方法,先使用toString方法将字符串缓冲区转换为字符串//Thisclassassumesthatthestringusedtoinitialize//fullPathhasadirectorypath,filename,andextension.//Themethodswon'tworkifitdoesn't.publicclassFilename{privateStringfullPathprivatecharpathSeparator,extensionSeparator;publicFilename(Stringstr,charsep,charext){fullPath=str;pathSeparator=sep;extensionSeparator=ext;}publicStringextension(){intdot=fullPath.lastIndexOf(extensionSeparator);returnfullPath.substring(dot+1);}publicStringfilename(){intdot=fullPath.lastIndexOf(extensionSeparator);intsep=fullPath.lastIndexOf(pathSeparator);returnfullPath.substring(sep+1,dot);}publicStringpath(){intsep=fullPath.lastIndexOf(pathSeparator);returnfullPath.substring(0,sep);}}

publicclassFilenameDemo{publicstaticvoidmain(String[]args){FilenamemyHomePage=newFilename("/home/mem/index.html",'/','.');System.out.println("Extension="+myHomePage.extension());System.out.println("Filename="+myHomePage.filename());System.out.println("Path="+myHomePage.path());}}输出:Extension=htmlFilename=indexPath=/home/mem〔六〕、比较字符串和局部字符串String类中用于比较字符串和局部字符串的方法:booleanendsWith(String)booleanstartsWith(String)booleanstartsWith(String,int)——如果该字符串是以方法参数指定的子字符串开头或结尾的,返回true;int表示在原始字符串中开始查看的偏移量intcompareTo(String)intcompareTo(Object)intcompareToIgnoreCase(String)——比较两个字符串,返回整型数据比较前Object参数被转换为字符串compareToIgnoreCase方法忽略大小写booleanequals(Object)booleanequslsIgnoreCase(String)——如果字符串包含与参数一样的字符序列,返回truebooleanregionMatches(int,String,int,int)booleanregionMatches(boolean,int,String,int,int)——检查字符串指定局部是否匹配String参数的指定局部例如:publicclassRegionMatchesDemo{publicstaticvoidmain(String[]args){StringsearchMe="GreenEggsandHam";StringfindMe=“Eggs”;//searchMe与findMe为String类引用intlen=findMe.length();//length()方法booleanfoundIt=false;inti=0;while(!searchMe.regionMatches(i,findMe,0,len)){i++;foundIt=true;}//foundIt的作用???if(foundIt){System.out.println(searchMe.substring(i,i+len));}}}输出:Eggs〔七〕操作字符串String类中用于操作字符串的方法:这些方法创立并包含结果的第二个字符串Stringconcat(String)——将String参数连接到这个字符串的末尾Stringreplace(char,char)——将第一个参数指定的字符替换为第二个参数指定的字符Stringtrim()——删除这个字符串两端的空格StringtoLowerCase()StringtoUpperCase()——分别将这个字符串转换为小写或大写例如://Thisexampledemonstratestheuseofthereplacemethod//intheStringclass.publicclassBostonAccentDemo{privatestaticvoidbostonAccent(Stringsentence){charr='r';charh='h';StringtranslatedSentence=sentence.replace(r,h);//replace方法,用h替换rSystem.out.println(translatedSentence);}publicstaticvoidmain(String[]args){//main方法,入口StringtranslateThis=“PakrthecarinHarvardyard.”;//translatThis为String类引用bostonAccent(translateThis);//调用方法bostonAccent,传递参数}}输出为:PahkthecahinHahvahdyahd.〔八〕修改字符串缓冲区StringBuffer类提供的用于修改字符串缓冲区的方法:StringBufferappend(boolean)StringBufferappend(char)StringBufferappend(char[])StringBufferappend(char[],int,int)StringBufferappend(double)将参数附加到这个字符串缓冲区。StringBufferappend(float)在进行附加操作前,数据被转换为字符串StringBufferappend(int)StringBufferappend(long)StringBufferappend(Object)StringBufferappend(String)StringBufferdelete(int,int)

StringBufferdeleteCharAt(int)——删除字符串缓冲区中的指定字符

StringBufferinsert(int,boolean)

StringBufferinsert(int,char)

StringBufferinsert(int,char[])

StringBufferinsert(int,char[],int,int)

StringBufferinsert(int,double)

StringBufferinsert(int,float)

StringBufferinsert(int,int)

StringBufferinsert(int,long)

StringBufferinsert(int,Object)

StringBufferinsert(int,String)——将第二个参数插入字符串缓冲区

第一个整数参数指定一个索引,数据

被插入到此索引之前。

StringBufferreplace(int,int,String)

voidsetCharAt(int,char)——替换这个字符串缓冲区中的指定字符

StringBufferreverse()

——反转这个字符串缓冲区中字符的次序例如:publicclassInsertDemo{publicstaticvoidmain(String[]args){StringBufferpalindrome=newStringBuffer(“Aman,aplan,acanal;Panama.”);//palindrome为StringBuffer类引用palindrome.insert(15,“acat,”);//将acat插入到索引为15的字符之前System.out.println(palindrome);}}输出为:一句对称的回文Aman,aplan,acat,acanal;Panama.注:将数据插入到字符串缓冲区的开始处,应该使用索引0将数据添加到字符串缓冲区的末尾,应使用等于字符串缓冲区当前长度的索引或用append方法〔九〕字符串和编译器看不懂!!!三、字符和字符串小结★Character对象用于包含单个字符值★String对象用于包含不改变的一系列字符★StringBuffer对象用于动态地构造或修改一系列字符程序Palindrome:

publicclassPalindrome{publicstaticb

温馨提示

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

评论

0/150

提交评论