字符串教学讲解课件_第1页
字符串教学讲解课件_第2页
字符串教学讲解课件_第3页
字符串教学讲解课件_第4页
字符串教学讲解课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第6章字符串本章要点掌握字符串的创建方式掌握字符串的常用操作掌握字符串的格式化理解正则表达式掌握常见正则表达式的定义掌握StringBuilder类的用法第6章字符串本章要点掌握字符串的创建方式第6章字符串6.1创建字符串6.2字符串操作6.3格式化字符串6.4正则表达式6.5可变字符串主要内容第6章字符串6.1创建字符串主要内容6.1创建字符串String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用。要创建字符串可以通过多种方式实现。1)可以通过为字符串变量赋值的方式来实例化字符串对象Strings=“good”;Sgood注意:声明字符串变量必须经过初始化或赋值后才能使用,否则编译器会报出“变量未被初始化”错误。6.1创建字符串String类即字符串类型,并不是Jav6.1创建字符串2)在Java中用java.lang.String类的构造方法来创建字符串变量。常用的构造方法如下:String()创建一个String类型的对象,其内容为空。String(chara[])使用指定的字符数组创建字符串对象。String(chara[],intoffset,intlength)使用指定的字符数组创建字符串对象,offset表示字符数组起始位置。length表示长度。6.1创建字符串2)在Java中用java.lang.6.1创建字符串chara[]={'g','o','o','d'};Strings=newString(a);Strings=newString("good");

chara[]={'s','t','u','d','e','n','t'};Strings=newString(a,2,4);Strings=newString("uden");6.1创建字符串chara[]={'g','o','6.1创建字符串3)在Java中还可以通过调用String类的valueOf方法来实例化字符串对象。例如:intx=100; Strings=String.valueOf(x);6.1创建字符串3)在Java中还可以通过调用Stri6.2.1字符串连接6.2.2获取字符串信息6.2.3字符串比较6.2.4字符串替换6.2.5字符串分割6.2.6大小写转换6.2.7取出首末空格6.2字符串操作6.2.1字符串连接6.2字符串操作6.2.1字符串连接字符串连接是字符串的基本操作之一,有两种方式可以实现:“+”String类的concat()方法为了简单起见通常使用“+”而不会调用方法。concat()方法的语法如下。publicStringconcat(Stringstr)6.2.1字符串连接字符串连接是字符串的基本操作之一,有6.2.1字符串连接【例6-1】分别使用“+”和concat()方法来连接字符串,并将结果输出。Stringstr1="Hello"+"World!";Stringstr2="Hello".concat("World!");System.out.println("使用+连接字符串:"+str1);System.out.println("使用concat()方法:"+str2);6.2.1字符串连接【例6-1】分别使用“+”和conc6.2.1字符串连接Java中一句相连的字符串不能分开在两行中写:System.out.println(“Ilike

Java”)System.out.println("Ilike"+ "Java");×6.2.1字符串连接Java中一句相连的字符串不能分开在6.2.1字符串连接字符串同其它数据类型连接“Money”+1+2“Money”+(1+2)“Money12”“Money3”6.2.1字符串连接字符串同其它数据类型连接“Money6.2.2获取字符串信息使用String类中length()方法,可以获得当前字符串中包含的Unicode代码单元个数。通常情况下,即包含的字符个数。注意:空格也算字符。一个汉字的长度也只有1。注意:区分String类的length()方法与数组的length属性。1.获取字符串长度6.2.2获取字符串信息使用String类中lengthStringname="一颗椰子树";System.out.println("字符串:"

+name+ "\t长度为:"

+name.length());1.获取字符串长度Stringname="一颗椰子树";1.获取字符2.获取指定字符的索引位置String类的indexOf()和lastIndexOf()方法都可以获得给定的字符/字符串在目标字符串中的索引位置,如果未找到匹配的字符或字符串则会返回-1。indexOf()方法返回第一个符合要求的索引值

publicintindexOf(Stringstr)lastIndexOf()返回最后一个符合要求索引值

publicintlastIndexOf(Stringstr)2.获取指定字符的索引位置String类的indexOf(2.获取指定字符的索引位置Stringstr="Wearestudents";intindex=str.indexOf("a");intlastindex=str.lastIndexOf('e');System.out.println("a在"+str+"中的起始位置是:" +index);System.out.println("e在"+str+"中的最后位置是:" +lastindex);2.获取指定字符的索引位置Stringstr="We3.获取指定索引位置的字符String类的charAt()方法可以获得指定索引位置的字符,该方法的语法如下。

publiccharcharAt(intindex)index:目标字符的索引,其值在0和字符串长度-1之间。Stringstr="helloword";charmychar=str.charAt(6);3.获取指定索引位置的字符String类的charAt()取子串通过String类的substring()方法可对字符串进行截取。1)substring(intbeginIndex)该方法返回的是从指定的索引位置开始截取直到该字符串的结尾的子串。Stringstr="HelloWord"; Stringsubstr=str.substring(3);取子串通过String类的substring()方法可对字符取子串2)substring(intbeginIndex,intendIndex)该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束(不包括结束位置)的子串。Stringstr="HelloWord"; Stringsubstr=str.substring(0,3);注意:endIndex不要越界[beginIndex,str.length()]取子串2)substring(intbeginIndex6.2.3字符串比较String类的equals()方法可以用来比较两个字符串的内容是否完全相同

publicbooleanequals(ObjectanObject)equalsIgnoreCase()方法可以在忽略大小写的情况下比较两个字符串的内容是否相同publicbooleanequalsIgnoreCase(StringanotherString)1.比较全部内容6.2.3字符串比较String类的equals()方法1.比较全部内容Strings1=newString("abc");Strings2=newString("ABC");booleanb=s1.equals(s2);

booleanb2=s1.equalsIgnoreCase(s2); System.out.println(s1+"equals"+s2+":"+b);System.out.println(s1+"equalsIgnoreCase"+s2+ ":"+b2);1.比较全部内容Strings1=newStrinJava的字符串池Stringstr1="abc";Stringstr2="abc";Stringstr3=newString("abc");System.out.println(str1==str2);System.out.println(str1==str3);在进行字符串比较时,通过==比较对象时,比较的是两个对象使用的内存地址是否相同;当使用equals()方法比较两个对象时,只要两个对象的内容相同,结果就为true,否则为false。Java的字符串池Stringstr1="abc";在进行Java虚拟机为了提高字符串应用效率,提供了字符串池来保存字符串常量,str1创建字符串常量“abc”,这时会先检测字符串池中是否包含该字符串,如果不包含,则创建字符串常量保存到字符串池中。str2也赋值为字符串“abc”,这是由于字符串池中已经存在该字符串,所以不再创建,也就是说这两个变量引用同一个字符串,那么它们的内存地址也是相同的,所以str1==str2成立。但是使用new关键字创建的字符串会新开辟内存空间所以str1==str3不成立。Java的字符串池Java虚拟机为了提高字符串应用效率,提供了字符串池来保存字2.比较开头结尾String类的startsWith()方法可以用来判断是否以给定字符串开头,语法如下。publicbooleanstartsWith(Stringprefix)prefix:字符串前缀String类的endsWith()方法可以用来判断是否已给定字符串结尾,语法如下。publicbooleanendsWith(Stringsuffix)suffix:字符串后缀2.比较开头结尾String类的startsWith()方2.比较开头结尾Stringnum1="22045612";booleanb=num1.startsWith("22");booleanb2=num1.endsWith("78");System.out.println(“字符串num1是以‘22’开始的 吗?"

+b);System.out.println(“字符串num1是以‘78’结束的 吗?"

+b2);2.比较开头结尾Stringnum1="220456按字典顺序比较两个字符串compareTo()方法按字典顺序比较两个字符串,该比较基于字符串中各个字符Unicode值。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。pareTo(Stringotherstr)pareToIgnoreCase(Stringotherstr)str、otherstr:参加比较的两个字符串对象。按字典顺序比较两个字符串compareTo()方法按字典顺序Stringstr=newString("b");Stringstr2=newString(“a”); Stringstr3=newString("c");System.out.println(str+"compareTo"+str2 +":"+pareTo(str2));System.out.println(str+"compareTo"+str3 +":"+pareTo(str3));Stringstr=newString("b");6.2.4字符串替换String类的replace()方法可以替换字符串内全部指定子字符串为另一字符串:publicStringreplace(CharSequenceoldstr,CharSequencenewstr)replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。如果要替换的字符oldstr在字符串中重复出现多次,replace()方法会将所有oldstr全部替换成newstr。6.2.4字符串替换String类的replace()方Stringstr="javaproject";Stringnewstr=str.replace("j","J");此时,newstr的值为:JavaproJect。需要注意的是,要替换的字符oldstr的大小写要与原字符串中字符的大小写保持一致,否则不能成功的替换。Stringnewstr=str.replace("P","t");6.2.4字符串替换还可以用该方法实现串中字符(子串)的删除Stringstr="javaproject";字符串分割String类的split()方法可以用来分割字符串,也可以限定拆分的次数。 publicString[]split(Stringregex) publicString[]split(Stringsign,intlimit)

regex:用于分割字符串的符号或正则表达式limit:用来限制返回数组中的元素个数注意:没有统一的对字符进行分割的符号。

如果想定义多个分隔符。可使用符号“|”。6.2.5字符串分割String类的split()方法可6.2.5字符串分割【例6-5】输出给定字符串中单词的个数。Stringmessage="Sosayweall!";String[]split=message.split("");System.out.println(message+"中共有"+ split.length+"个单词!");6.2.5字符串分割【例6-5】输出给定字符串中单词的个6.2.5字符串分割Stringstr=newString("abc,def,ghi,gkl");String[]newstr=str.split(",");for(inti=0;i<newstr.length;i++){ System.out.println(newstr[i]);}String[]newstr2=str.split(",",2);for(intj=0;j<newstr2.length;j++){ System.out.println(newstr2[j]);}6.2.5字符串分割Stringstr=newStr6.2.6大小写转换String类的toUpperCase()和toLowerCase()方法可以用来将字符串转换为全部大写和全部小写的形式,语法如下。 publicStringtoUpperCase() publicStringtoLowerCase()如果字符串中没有应该被转换的字符,则将原字符串返回。否则将返回一个新的字符串,新字符长度与原字符长度相同。6.2.6大小写转换String类的toUpperCas【例6-6】将给定的字符串转换为大写和小写形式并输出。6.2.6大小写转换Stringmessage="Sosayweall!";System.out.println(message);System.out.println("转换为大写形式:"+ message.toUpperCase());System.out.println(message);System.out.println("转换为小写形式:"+ message.toLowerCase());【例6-6】将给定的字符串转换为大写和小写形式并输出。去除首末空格String类的trim()方法可以用来去除字符串首末空格。在获得用户输入信息时,通常会使用该方法,其语法如下。 publicStringtrim()6.2.7去除首末空格String类的trim()方法可【例6-7】去掉给定字符串的首末空格并输出结果。6.2.7去除首末空格Stringmessage="Sosayweall!";System.out.println("字符串长度:"+ message.length());System.out.println("去除空格后字符串长度:"+ message.trim().length());【例6-7】去掉给定字符串的首末空格并输出结果。6.2.7【例】小写字母字符串循环右移3位进行加密字符串字符数组Stringword="abcxyz";char[]arr=word.toCharArray();for(inti=0;i<arr.length;i++){if(arr[i]>='a'&&arr[i]<'x') arr[i]=(char)(arr[i]+3);elsearr[i]=(char)(arr[i]+3-26);}word=newString(arr);System.out.println(word);【例】小写字母字符串循环右移3位进行加密字符串字符数组S6.3.1格式化方法6.3.2日期格式化6.3.3时间格式化6.3.4日期时间组合格式化6.3.5常规类型格式化6.3格式化字符串6.3.1格式化方法6.3格式化字符串6.3.1格式化方法String类的format()方法可以用来格式化字符串,其语法如下。 publicstaticStringformat(String

format,Object...args)format:使用了指定格式的字符串。args:与format字符串中对应的参数值。6.3.1格式化方法String类的format()方法使用format()方法对日期进行格式化时,会用到日期格式化转换符。6.3.2日期格式化P77使用format()方法对日期进行格式化时,会用到日期格式化Datedate=newDate(); Stringyear=String.format("

%tY",date); Stringmonth=String.format("%tB",date);Stringday=String.format("%td",date);System.out.println("今年是:"+year+"年");System.out.println("现在是:"+month);System.out.println("今天是:"+day+"号");6.3.2日期格式化Datedate=newDate(); 6.3.2时间格式化转换符可以将时间格式化为时、分、秒、毫秒。6.3.3时间格式化P78时间格式化转换符可以将时间格式化为时、分、秒、毫秒。6.3.Datedate=newDate();Stringhour=String.format("%tH",date);Stringminute=String.format("%tM",date);Stringsecond=String.format("%tS",date);System.out.println("现在是:"+hour+"时"+ minute+"分"+second+"秒");6.3.3时间格式化Datedate=newDate();6.3.3因为日期与时间经常是同时出现的,所以还定义了各种日期和时间组合的格式。6.3.4日期时间组合格式化P79因为日期与时间经常是同时出现的,所以还定义了各种日期和时间组Datedate=newDate();Stringtime=String.format("%tc",date);Stringform=String.format("%tF",date);System.out.println("全部的时间信息是:"

+ time);System.out.println("年-月-日格式:"+form);6.3.4日期时间组合格式化Datedate=newDate();6.3.常规类型的格式化转换符可以实现对常规类型的数据进行格式化。6.3.5常规类型格式化P80常规类型的格式化转换符可以实现对常规类型的数据进行格式化。6Stringstr=String.format("%d",400/2);Stringstr2=String.format("%b",3>5);Stringstr3=String.format("%x",200);Stringstr4=String.format("%.2f",1.2685);System.out.println("400的一半是:"+str);System.out.println("3>5正确吗:"+str2);System.out.println("200的16进制数是:"+str3);System.out.println("1.2685保留两位小数是:"+str4);6.3.5常规类型格式化Stringstr=String.format("%d6.4.1判断是否符合正则表达式6.4.2正则表达式的元字符6.4.3正则表达式的限定符6.4.4方括号中元字符的含义6.4正则表达式6.4.1判断是否符合正则表达式6.4正则表达式正则表达式是事先定义好的一些特殊字符及这些特殊字符的组合,组成一个“规则字符串”。用来表达对字符串的过滤逻辑,通常被用于判断语句中,来检查某一字符串是否满足某一格式。6.4正则表达式正则表达式是事先定义好的一些特殊字符及这些特殊字符的组合,组6.4.1判断是否符合正则表达式String类的matches()方法提供了比较字符串与给定正则表达式是否匹配的功能,该方法的语法如下 publicbooleanmatches(Stringregex)regex:用于比较的正则表达式。6.4.1判断是否符合正则表达式String类的matc由一些含有特殊意义的字符组成的字符串,这些含有特殊意义的字符称为元字符。6.4.2正则表达式的元字符P81由一些含有特殊意义的字符组成的字符串,这些含有特殊意义的字符6.4.2正则表达式的元字符【例6-16】判断给定的字符串是否符合特定的正则表达式。大写字母+3个小写字母+3个数字。Stringregex="\\p{Upper}\\p{Lower}\\p{Lower}

\\p{Lower}\\d\\d\\d";Stringmessage1="SWJT001";Stringmessage2="Swjt001";booleanresult1=message1.matches(regex);booleanresult2=message2.matches(regex);System.out.println(message1+"合法:"+result1);System.out.println(message2+"合法:"+result2);6.4.2正则表达式的元字符【例6-16】判断给定的字在使用正则表达式时,如果要某一类型的元字符多次输出,逐个输入就相当麻烦,可以使用正则表达式的限定元字符来重复次数。6.4.3正则表达式的限定符P83在使用正则表达式时,如果要某一类型的元字符多次输出,逐个输入Stringregex="\\w{1,}\\@\\w{1,}\\.{1}\\w{1,}";Stringstr1="aaa@"; Stringstr2="aaaa"; Stringstr3="aaaaa@111.com";System.out.println(str1.matches(regex));System.out.println(str2.matches(regex));System.out.println(str3.matches(regex));6.4.3正则表达式的限定符Stringregex="\\w{1,}\\@\\w{在正则表达式中还可以用方括号把多个字符括起来表示一个元字符,该元字符可代表方括号中的任何一个字符。6.4.4方括号中元字符的含义P83在正则表达式中还可以用方括号把多个字符括起来表示一个元字符,【例6-18】判断给定字符串是否为合法手机号6.4.4方括号中元字符的含义Stringregex="^(13\\d|15[036-9]|18[89])\\d{8}$";Stringnumber=;booleanmatch=number.matches(regex);System.out.println(number+"\n合法手机号码:" +match);【例6-18】判断给定字符串是否为合法手机号6.4.4方【例】统计汉字个数6.4.4方括号中元字符的含义Stringm="我爱学java";Stringregex="^[\u4e00-\u9fff]$";intc=0;for(inti=0;i<m.length();i++){if((""+m.charAt(i)).matches(regex)){c++;}}System.out.println(m+"中包含"+c+"个汉字");【例】统计汉字个数6.4.4方括号中元字符的含义St6.5可变字符串使用Java中的String类创建字符串,它的长度是固定的,其内容不可以修改,即每次“修改”都相当于创建一个新的字符串。这在大量操作字符串的场合性能并不理想。为了解决这个问题,在API中提供了StringBuilder类,使用它来创建的字符串,内容可以实现真正意义上的修改。6.5可变字符串使用Java中的String类创建字符串Stringstr=

""; //创建空字符串longstarTime=System.currentTimeMillis(); //定义对字符串执行操作的起始时间for(inti=0;i<10000;i++){

str=str+i; //循环追加字符串}longendTime=System.currentTimeMillis(); //定义对字符串操作后的时间longtime=endTime-starTime; //计算对字符串执行操作的时间System.out.println("Sting消耗时间:"+time); Stringstr=""; //创建空字符串6.5可变字符串StringBuffer类对象是可变的字符串,有改变字符串的若干方法。StringBuffer类构造函数StringBuffer()StringBuffer(intlength)//设置初始容量StringBuffer(Strings)//设置初始值StringBuffer类方法StringtoString()//转换为String类型字符串voidsetCharAt(int

index,charc)//修改字符6.5可变字符串StringBuffer类对象是可变的字6.5可变字符串新创建的StringBuilder对象初始容量是16个字符。可以自行指定初始长度。如果附加的字符超过可容纳的长度,则StringBuilder对象将自动增加长度以

温馨提示

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

评论

0/150

提交评论