




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter9StringsandTextI/O1MotivationsOftenyouencountertheproblemsthatinvolvestringprocessingandandoutput.Supposeyouneedtowriteaprogramtoreplacealloccurrencesofawordwithanewwordinafile.Howdoyousolvethisproblem?Thischapterintroducesstringsandtextfiles,whichwillenableyoutosolvethisproblem.2ObjectivesTousetheStringclasstoprocessfixedstrings(§9.2).TousetheCharacterclasstoprocessasinglecharacter(§9.3).TousetheStringBuilder/StringBufferclasstoprocessflexiblestrings(§9.4).TodistinguishamongtheString,StringBuilder,andStringBufferclasses(§9.2-9.4).Tolearnhowtopassargumentstothemainmethodfromthecommandline(§9.5).TodiscoverandtodeleteandrenamefilesusingtheFileclass(§9.6).TowritedatatoathePrintWriterclass(§9.7.1).ToreaddatafromatheScannerclass(§9.7.2).(GUI)Toopenfilesusingadialogbox(§9.8).3TheStringClassConstructingaString:Stringmessage="WelcometoJava“;Stringmessage=newString("WelcometoJava“);Strings=newString();ObtainingStringlengthandRetrievingIndividualCharactersinastringStringConcatenation(concat)Substrings(substring(index),substring(start,end))Comparisons(equals,compareTo)StringConversionsFindingaCharacteroraSubstringinaStringConversionsbetweenStringsandArraysConvertingCharactersandNumericValuestoStrings4ConstructingStringsStringnewString=newString(stringLiteral);
Stringmessage=newString("WelcometoJava");Sincestringsareusedfrequently,Javaprovidesashorthandinitializerforcreatingastring:Stringmessage="WelcometoJava";5StringsAreImmutableAStringobjectisimmutable;itscontentscannotbechanged.Doesthefollowingcodechangethecontentsofthestring?Strings="Java";s="HTML";6TraceCode
Strings="Java";s="HTML";animation7TraceCode
Strings="Java";s="HTML";animation8InternedStringsSincestringsareimmutableandarefrequentlyused,toimproveefficiencyandsavememory,theJVMusesauniqueinstanceforstringliteralswiththesamecharactersequence.Suchaninstanceiscalledinterned.Forexample,thefollowingstatements:9Examplesdisplay
s1==sisfalses1==s3istrueAnewobjectiscreatedifyouusethenewoperator.Ifyouusethestringinitializer,nonewobjectiscreatediftheinternedobjectisalreadycreated.10TraceCodeanimation11TraceCode12TraceCode13StringComparisons14StringComparisonsequals Strings1=newString("Welcome“); Strings2="welcome";
if(s1.equals(s2)){//s1ands2havethesamecontents
}
if(s1==s2){//s1ands2havethesamereference
}15StringComparisons,cont.compareTo(Objectobject) Strings1=newString("Welcome“); Strings2="welcome";
if(pareTo(s2)>0){//s1isgreaterthans2}elseif(pareTo(s2)==0){//s1ands2havethesamecontents}else//s1islessthans216StringLength,Characters,andCombiningStrings17FindingStringLengthFindingstringlengthusingthelength()method:message="Welcome";message.length()(returns7)18RetrievingIndividualCharactersinaStringDonotusemessage[0]Usemessage.charAt(index)Indexstartsfrom019StringConcatenationStrings3=s1.concat(s2);Strings3=s1+s2;s1+s2+s3+s4+s5sameas(((s1.concat(s2)).concat(s3)).concat(s4)).concat(s5);20ExtractingSubstrings21ExtractingSubstringsYoucanextractasinglecharacterfromastringusingthecharAtmethod.YoucanalsoextractasubstringfromastringusingthesubstringmethodintheStringclass.Strings1="WelcometoJava";Strings2=s1.substring(0,11)+"HTML";22Converting,Replacing,andSplittingStrings23Examples"Welcome".toLowerCase()returnsanewstring,welcome."Welcome".toUpperCase()returnsanewstring,WELCOME."Welcome".trim()returnsanewstring,Welcome."Welcome".replace('e','A')returnsanewstring,WAlcomA."Welcome".replaceFirst("e","AB")returnsanewstring,WABlcome."Welcome".replace("e","AB")returnsanewstring,WABlcomAB."Welcome".replace("el","AB")returnsanewstring,WABlcome.24SplittingaStringString[]tokens="Java#HTML#Perl".split("#",0);for(inti=0;i<tokens.length;i++)System.out.print(tokens[i]+"");JavaHTMLPerldisplays25Matching,ReplacingandSplittingbyPatterns
Youcanmatch,replace,orsplitastringbyspecifyingapattern.Thisisanextremelyusefulandpowerfulfeature,commonlyknownasregularexpression.Regularexpressioniscomplextobeginningstudents.Forthisreason,twosimplepatternsareusedinthissection.PleaserefertoSupplementIII.F,“RegularExpressions,”forfurtherstudies.
"Java".matches("Java");"Java".equals("Java");"Javaisfun".matches("Java.*");"Javaiscool".matches("Java.*");26Matching,ReplacingandSplittingbyPatterns
ThereplaceAll,replaceFirst,andsplitmethodscanbeusedwitharegularexpression.Forexample,thefollowingstatementreturnsanewstringthatreplaces$,+,or#in"a+b$#c"bythestringNNN.Strings="a+b$#c".replaceAll("[$+#]","NNN");System.out.println(s);Heretheregularexpression[$+#]specifiesapatternthatmatches$,+,or#.So,theoutputisaNNNbNNNNNNc.
27Matching,ReplacingandSplittingbyPatterns
Thefollowingstatementsplitsthestringintoanarrayofstringsdelimitedbysomepunctuationmarks.String[]tokens="Java,C?C#,C++".split("[.,:;?]");
for(inti=0;i<tokens.length;i++)System.out.println(tokens[i]);28FindingaCharacteroraSubstringinaString29FindingaCharacteroraSubstringinaString"WelcometoJava".indexOf('W')
returns0."WelcometoJava".indexOf('x')
returns-1."WelcometoJava".indexOf('o',5)
returns9."WelcometoJava".indexOf("come")
returns3."WelcometoJava".indexOf("Java",5)
returns11."WelcometoJava".indexOf("java",5)
returns-1."WelcometoJava".lastIndexOf('a')
returns14.
30ConvertCharacterandNumberstoStringsTheStringclassprovidesseveralstaticvalueOfmethodsforconvertingacharacter,anarrayofcharacters,andnumericvaluestostrings.ThesemethodshavethesamenamevalueOfwithdifferentargumenttypeschar,char[],double,long,int,andfloat.Forexample,toconvertadoublevaluetoastring,useString.valueOf(5.44).Thereturnvalueisstringconsistsofcharacters‘5’,‘.’,‘4’,and‘4’.31Problem:FindingPalindromesObjective:Checkingwhetherastringisapalindrome:astringthatreadsthesameforwardandbackward.CheckPalindromeRun32TheCharacterClass33ExamplesCharactercharObject=newCharacter('b');charOpareTo(newCharacter('a'))returns1charOpareTo(newCharacter('b'))returns0charOpareTo(newCharacter('c'))returns-1charOpareTo(newCharacter('d')returns–2charObject.equals(newCharacter('b'))returnstruecharObject.equals(newCharacter('d'))returnsfalse34Problem:CountingEachLetterinaStringThisexamplegivesaprogramthatcountsthenumberofoccurrenceofeachletterinastring.Assumethelettersarenotcase-sensitive.
CountEachLetterRun35StringBuilderandStringBufferTheStringBuilder/StringBufferclassisanalternativetotheStringclass.Ingeneral,aStringBuilder/StringBuffercanbeusedwhereverastringisused.StringBuilder/StringBufferismoreflexiblethanString.Youcanadd,insert,orappendnewcontentsintoastringbuffer,whereasthevalueofaStringobjectisfixedoncethestringiscreated.36StringBuilderConstructors37ModifyingStringsintheBuilder38ExamplesstringBuilder.append("Java");stringBuilder.insert(11,"HTMLand");stringBuilder.delete(8,11)changesthebuildertoWelcomeJava.stringBuilder.deleteCharAt(8)changesthebuildertoWelcomeoJava.stringBuilder.reverse()changesthebuildertoavaJotemocleW.stringBuilder.replace(11,15,"HTML")changesthebuildertoWelcometoHTML.stringBuilder.setCharAt(0,'w')setsthebuildertowelcometoJava.39ThetoString,capacity,length,setLength,andcharAtMethods40Problem:CheckingPalindromesIgnoringNon-alphanumericCharactersThisexamplegivesaprogramthatcountsthenumberofoccurrenceofeachletterinastring.Assumethelettersarenotcase-sensitive.PalindromeIgnoreNonAlphanumericRun41MainMethodIsJustaRegularMethodYoucancallaregularmethodbypassingactualparameters.Canyoupassargumentstomain?Ofcourse,yes.Forexample,themainmethodinclassBisinvokedbyamethodinA,asshownbelow:42Command-LineParametersclassTestMain{ publicstaticvoidmain(String[]args){...}}javaTestMainarg0arg1arg2...argn43Processing
Command-LineParametersInthemainmethod,gettheargumentsfromargs[0],args[1],...,args[n],whichcorrespondstoarg0,arg1,...,argninthecommandline.44Problem:CalculatorObjective:Writeaprogramthatwillperformbinaryoperationsonintegers.Theprogramreceivesthreeparameters:anoperatorandtwointegers.
CalculatorjavaCalculator2+3javaCalculator2-3RunjavaCalculator2/3javaCalculator2“*”345RegularExpressionsAregularexpression(abbreviatedregex)isastringthatdescribesapatternformatchingasetofstrings.Regularexpressionisapowerfultoolforstringmanipulations.Youcanuseregularexpressionsformatching,replacing,andsplittingstrings.CompanionWebsite46MatchingStrings"Java".matches("Java");"Java".equals("Java");"Javaisfun".matches("Java.*")"Javaiscool".matches("Java.*")"Javaispowerful".matches("Java.*")CompanionWebsite47RegularExpressionSyntaxCompanionWebsite48ReplacingandSplittingStringsCompanionWebsite49ExamplesStrings="JavaJavaJava".replaceAll("v\\w","wi");Strings="JavaJavaJava".replaceFirst("v\\w","wi");String[]s="Java1HTML2Perl".split("\\d");CompanionWebsite50TheTheFileclassisintendedtoprovideanabstractionthatdealswithmostofthemachine-dependentcomplexitiesoffilesandpathnamesinamachine-independentfashion.Theisastring.TheFileclassisawrapperclassfortheanditsdirectorypath.51Obtainingandmanipulatingfile52Problem:ExploreTestRunObjective:Writeaprogramthatdemonstrateshowtocreatefilesinap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府打印室管理制度
- 教务科教学管理制度
- 机械业科研管理制度
- 机油库安全管理制度
- 杂物梯人员管理制度
- 材料进场库管理制度
- 村土地流转管理制度
- 村级环卫员管理制度
- 水果进出库管理制度
- 水煤浆生产管理制度
- 中国医院质量安全管理第2-13部分:患者服务临床用血
- 《篮球原地运球》教案 (共三篇)
- 《病历书写基本规范》解读教学课件
- 《智慧物流理论》期末考试复习题库(含答案)
- 《网络素养提升安全上网我先行》主题班会
- 湖北省宜昌市(2024年-2025年小学三年级语文)部编版期末考试(下学期)试卷(含答案)
- 丁腈橡胶材质报告
- DB15-T 3586-2024 黄河灌区高标准农田盐碱地改良效果综合评价方法
- 新《劳动合同法》知识学习考试题库200题(含答案)
- 《草房子》人物形象分析全部
- 2024至2030年中国口腔医疗行业市场深度研究及发展趋势预测报告
评论
0/150
提交评论