第6章字符串ppt课件.ppt

上传人:本田雅阁 文档编号:2567068 上传时间:2019-04-09 格式:PPT 页数:66 大小:537.01KB
返回 下载 相关 举报
第6章字符串ppt课件.ppt_第1页
第1页 / 共66页
第6章字符串ppt课件.ppt_第2页
第2页 / 共66页
第6章字符串ppt课件.ppt_第3页
第3页 / 共66页
第6章字符串ppt课件.ppt_第4页
第4页 / 共66页
第6章字符串ppt课件.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《第6章字符串ppt课件.ppt》由会员分享,可在线阅读,更多相关《第6章字符串ppt课件.ppt(66页珍藏版)》请在三一文库上搜索。

1、第6章 字符串,本章要点,掌握字符串的创建方式 掌握字符串的常用操作 掌握字符串的格式化 理解正则表达式 掌握常见正则表达式的定义 掌握StringBuilder类的用法,第6章 字符串,6.1 创建字符串 6.2 字符串操作 6.3 格式化字符串 6.4 正则表达式 6.5 可变字符串,主要内容,6.1 创建字符串,String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用。 要创建字符串可以通过多种方式实现。 1) 可以通过为字符串变量赋值的方式来实例化字符串对象,注意:声明字符串变量必须经过初始化或赋值后才能使用,否则编译器会报出“变量未被初始化”错误。,6.

2、1 创建字符串,2) 在Java中用java.lang.String类的构造方法来创建字符串变量。常用的构造方法如下: String() 创建一个String类型的对象,其内容为空。 String(char a) 使用指定的字符数组创建字符串对象。 String(char a, int offset, int length) 使用指定的字符数组创建字符串对象,offset表示字符数组起始位置。length表示长度。,6.1 创建字符串,char a =g,o,o,d; String s=new String(a); String s=new String(“good“); char a =s,

3、t,u,d,e,n,t; String s=new String(a, 2, 4); String s=new String(“uden“);,6.1 创建字符串,3) 在Java中还可以通过调用String类的valueOf方法来实例化字符串对象。 例如: int x=100; String s = String.valueOf(x);,6.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 字符串连接,字符串连接是字符串的基本操作之一,有两种

4、方式可以实现: “+” String类的concat()方法 为了简单起见通常使用“+”而不会调用方法。 concat()方法的语法如下。 public String concat(String str),6.2.1 字符串连接,【例6-1】分别使用“+”和concat()方法来连接字符串,并将结果输出。,String str1 = “Hello “ + “World!“; String str2 = “Hello “.concat(“World!“); System.out.println(“使用+连接字符串:“ + str1); System.out.println(“使用concat()

5、方法:“ + str2);,6.2.1 字符串连接,Java中一句相连的字符串不能分开在两行中写:,System.out.println(“I like Java”),System.out.println(“I like“+ “Java“);,6.2.1 字符串连接,字符串同其它数据类型连接,“Money”+1+2,“Money”+(1+2),“Money12”,“Money3”,6.2.2 获取字符串信息,使用String类中length( )方法,可以获得当前字符串中包含的Unicode代码单元个数。通常情况下,即包含的字符个数。 注意: 空格也算字符。 一个汉字的长度也只有1。 注意:区

6、分String类的length( )方法与数组的length属性。,1. 获取字符串长度,String name = “一颗椰子树“; System.out.println(“字符串:“ + name + “t长度为:“ + name.length();,1. 获取字符串长度,2. 获取指定字符的索引位置,String类的indexOf()和lastIndexOf()方法都可以获得给定的字符/字符串在目标字符串中的索引位置,如果未找到匹配的字符或字符串则会返回-1。 indexOf()方法返回第一个符合要求的索引值 public int indexOf(String str) lastInde

7、xOf() 返回最后一个符合要求索引值 public int lastIndexOf(String str),2. 获取指定字符的索引位置,String str = “We are students“ ; int index = str.indexOf(“a“); int lastindex=str.lastIndexOf(e); System.out.println(“a在“+str+“中的起始位置是:“ +index); System.out.println(“e在“+str+“中的最后位置是:“ +lastindex);,3. 获取指定索引位置的字符,String类的charAt()方法

8、可以获得指定索引位置的字符,该方法的语法如下。 public char charAt(int index) index:目标字符的索引,其值在0和字符串长度-1之间。,String str = “hello word“; char mychar = str.charAt(6);,取子串,通过String类的substring()方法可对字符串进行截取。 1) substring(int beginIndex) 该方法返回的是从指定的索引位置开始截取直到该字符串的结尾的子串。,String str = “Hello Word“; String substr = str.substring(3);

9、,取子串,2) substring(int beginIndex , int endIndex) 该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束(不包括结束位置)的子串。,String str = “Hello Word“; String substr = str.substring(0,3);,注意: endIndex不要越界beginIndex,str.length(),6.2.3 字符串比较,String类的equals()方法可以用来比较两个字符串的内容是否完全相同 public boolean equals(Object anObject) equalsIgnoreCa

10、se()方法可以在忽略大小写的情况下比较两个字符串的内容是否相同public boolean equalsIgnoreCase(String anotherString),1. 比较全部内容,1. 比较全部内容,String s1 = new String(“abc“); String s2 = new String(“ABC“); boolean b = s1.equals(s2); boolean b2 = s1.equalsIgnoreCase(s2); System.out.println(s1 + “ equals “ + s2 + “ : “ + b); System.out.pr

11、intln(s1 + “ equalsIgnoreCase “ + s2 + “ :“ + b2);,Java的字符串池,String str1=“abc“; String str2=“abc“; String str3=new String(“abc“); System.out.println(str1=str2); System.out.println(str1=str3);,在进行字符串比较时,通过=比较对象时,比较的是两个对象使用的内存地址是否相同; 当使用equals()方法比较两个对象时,只要两个对象的内容相同,结果就为true,否则为false。,Java虚拟机为了提高字符串应用

12、效率,提供了字符串池来保存字符串常量, str1创建字符串常量“abc”,这时会先检测字符串池中是否包含该字符串,如果不包含,则创建字符串常量保存到字符串池中。 str2也赋值为字符串“abc”,这是由于字符串池中已经存在该字符串,所以不再创建,也就是说这两个变量引用同一个字符串,那么它们的内存地址也是相同的,所以str1=str2成立。 但是使用new关键字创建的字符串会新开辟内存空间所以str1=str3不成立。,Java的字符串池,2. 比较开头结尾,String类的startsWith()方法可以用来判断是否以给定字符串开头,语法如下。 public boolean startsWit

13、h(String prefix) prefix:字符串前缀 String类的endsWith()方法可以用来判断是否已给定字符串结尾,语法如下。 public boolean endsWith(String suffix) suffix:字符串后缀,2. 比较开头结尾,String num1 = “22045612“; boolean b = num1.startsWith(“22“); boolean b2 = num1.endsWith(“78“); System.out.println(“字符串num1是以22开始的 吗?“ + b); System.out.println(“字符串nu

14、m1是以78结束的 吗?“ + b2);,按字典顺序比较两个字符串,compareTo()方法按字典顺序比较两个字符串,该比较基于字符串中各个字符Unicode值。 如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数; 如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数; 如果这两个字符串相等,则结果为0。,pareTo(String otherstr) pareToIgnoreCase(String otherstr) str、otherstr:参加比较的两个字符串对象。,String str = new String(“b“); String

15、 str2 = new String(“a”); String str3 = new String(“c“); System.out.println(str + “ compareTo “ + str2 + “:“+ pareTo(str2); System.out.println(str + “ compareTo “ + str3 + “:“+ pareTo(str3) );,6.2.4 字符串替换,String类的replace()方法可以替换字符串内全部指定子字符串为另一字符串: public String replace(CharSequence oldstr, CharSequen

16、ce newstr) replace()方法返回的结果是一个新的字符串。 如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。 如果要替换的字符oldstr在字符串中重复出现多次,replace()方法会将所有oldstr全部替换成newstr。,String str = “java project“; String newstr = str.replace(“j“,“J“); 此时,newstr的值为:Java proJect。 需要注意的是,要替换的字符oldstr的大小写要与原字符串中字符的大小写保持一致,否则不能成功的替换。 String newstr =

17、 str.replace(“P“,“t“);,6.2.4 字符串替换,还可以用该方法实现串中字符(子串)的删除,6.2.5 字符串分割,String类的split()方法可以用来分割字符串,也可以限定拆分的次数。 public String split(String regex) public String split(String sign,int limit) regex:用于分割字符串的符号或正则表达式 limit:用来限制返回数组中的元素个数,注意:没有统一的对字符进行分割的符号。 如果想定义多个分隔符。可使用符号“|”。,6.2.5 字符串分割,【例6-5】输出给定字符串中单词的个数

18、。,String message = “So say we all!“ ; String split=message.split(“ “); System.out.println(message + “中共有“ + split.length + “个单词!“);,6.2.5 字符串分割,String str=new String(“abc,def,ghi,gkl“); String newstr = str.split(“,“); for (int i = 0; i newstr.length; i+) System.out.println(newstri); String newstr2 =

19、 str.split(“,“,2); for(int j = 0;jnewstr2.length;j+) System.out.println(newstr2j); ,6.2.6 大小写转换,String类的toUpperCase()和toLowerCase()方法可以用来将字符串转换为全部大写和全部小写的形式,语法如下。 public String toUpperCase() public String toLowerCase() 如果字符串中没有应该被转换的字符,则将原字符串返回。 否则将返回一个新的字符串,新字符长度与原字符长度相同。,【例6-6】 将给定的字符串转换为大写和小写形式并输

20、出。,6.2.6 大小写转换,String message = “So say we all!“; System.out.println(message); System.out.println(“转换为大写形式:“ + message.toUpperCase(); System.out.println(message); System.out.println(“转换为小写形式:“ + message.toLowerCase();,6.2.7 去除首末空格,String类的trim()方法可以用来去除字符串首末空格。在获得用户输入信息时,通常会使用该方法,其语法如下。 public Strin

21、g trim(),【例6-7】 去掉给定字符串的首末空格并输出结果。,6.2.7 去除首末空格,String message =“ So say we all! “; System.out.println(“字符串长度:“ + message.length(); System.out.println(“去除空格后字符串长度:“ + message.trim().length();,【例】小写字母字符串循环右移3位进行加密,字符串字符数组,String word = “abcxyz“; char arr = word.toCharArray(); for(int i=0;i=a,6.3.1 格式

22、化方法 6.3.2 日期格式化 6.3.3 时间格式化 6.3.4 日期时间组合格式化 6.3.5 常规类型格式化,6.3 格式化字符串,6.3.1 格式化方法,String类的format()方法可以用来格式化字符串,其语法如下。 public static String format(String format,Object. args) format:使用了指定格式的字符串。 args:与format字符串中对应的参数值。,使用format()方法对日期进行格式化时,会用到日期格式化转换符。,6.3.2 日期格式化,P77,Date date = new Date(); String y

23、ear = String.format(“ %tY “, date); String month = String.format(“%tB“, date); String day = String.format(“%td“, date); System.out.println(“今年是: “+year+ “年“); System.out.println(“现在是:“ + month); System.out.println(“今天是:“ +day+ “号“);,6.3.2 日期格式化,时间格式化转换符可以将时间格式化为时、分、秒、毫秒。,6.3.3 时间格式化,P78,Date date =

24、new Date(); String hour = String.format(“%tH“,date); String minute = String.format(“%tM“,date); String second = String.format(“%tS“,date); System.out.println(“现在是:“ + hour+“时“+ minute + “分“ + second + “秒“ );,6.3.3 时间格式化,因为日期与时间经常是同时出现的,所以还定义了各种日期和时间组合的格式。,6.3.4 日期时间组合格式化,P79,Date date = new Date();

25、String time = String.format(“%tc“, date); String form = String.format(“%tF“, date); System.out.println(“全部的时间信息是:“ + time); System.out.println(“年-月-日格式:“+form);,6.3.4 日期时间组合格式化,常规类型的格式化转换符可以实现对常规类型的数据进行格式化。,6.3.5 常规类型格式化,P80,String str = String.format(“%d“,400/2); String str2 = String.format(“%b“,3

26、5); String str3 = String.format(“%x“,200); String str4 = String.format(“%.2f“,1.2685); System.out.println(“400的一半是:“+str); System.out.println(“35正确吗:“+str2); System.out.println(“200的16进制数是:“+str3); System.out.println(“1.2685保留两位小数是:“+str4);,6.3.5 常规类型格式化,6.4.1 判断是否符合正则表达式 6.4.2 正则表达式的元字符 6.4.3 正则表达式

27、的限定符 6.4.4 方括号中元字符的含义,6.4 正则表达式,正则表达式是事先定义好的一些特殊字符及这些特殊字符的组合,组成一个“规则字符串”。 用来表达对字符串的过滤逻辑,通常被用于判断语句中,来检查某一字符串是否满足某一格式。,6.4 正则表达式,6.4.1 判断是否符合正则表达式,String类的matches()方法提供了比较字符串与给定正则表达式是否匹配的功能, 该方法的语法如下 public boolean matches(String regex) regex:用于比较的正则表达式。,由一些含有特殊意义的字符组成的字符串,这些含有特殊意义的字符称为元字符。,6.4.2 正则表达

28、式的元字符,P81,6.4.2 正则表达式的元字符,【例6-16】 判断给定的字符串是否符合特定的正则表达式。大写字母+3个小写字母+3个数字。,String regex = “pUpperpLowerpLower pLowerddd“; String message1 = “SWJT001“; String message2 = “Swjt001“; boolean result1 = message1.matches(regex); boolean result2 = message2.matches(regex); System.out.println(message1 + “合法:“

29、+ result1); System.out.println(message2 + “合法:“ + result2);,在使用正则表达式时,如果要某一类型的元字符多次输出,逐个输入就相当麻烦,可以使用正则表达式的限定元字符来重复次数。,6.4.3 正则表达式的限定符,P83,String regex = “w1,w1,.1w1,“; String str1 = “aaa“; String str2 = “aaaa“; String str3 = ““; System.out.println(str1.matches(regex); System.out.println(str2.matches

30、(regex); System.out.println(str3.matches(regex);,6.4.3 正则表达式的限定符,在正则表达式中还可以用方括号把多个字符括起来表示一个元字符,该元字符可代表方括号中的任何一个字符。,6.4.4 方括号中元字符的含义,P83,【例6-18】判断给定字符串是否为合法手机号,6.4.4 方括号中元字符的含义,String regex = “(13d|15036-9|1889)d8$“; String number = “15044268138“; boolean match = number.matches(regex); System.out.pri

31、ntln(number + “n合法手机号码:“ + match);,【例】统计汉字个数,6.4.4 方括号中元字符的含义,String m= “我爱学java“; String regex= “u4e00-u9fff$“; int c=0; for(int i=0;im.length();i+) if (“+m.charAt(i).matches(regex) c+; System.out.println(m+“中包含“+c+“个汉字“);,6.5 可变字符串,使用Java中的String类创建字符串,它的长度是固定的,其内容不可以修改,即每次“修改”都相当于创建一个新的字符串。这在大量操作

32、字符串的场合性能并不理想。为了解决这个问题,在API中提供了StringBuilder类,使用它来创建的字符串,内容可以实现真正意义上的修改。,String str = “; /创建空字符串 long starTime = System.currentTimeMillis(); /定义对字符串执行操作的起始时间 for(int i = 0;i10000;i+) str = str+i; /循环追加字符串 long endTime = System.currentTimeMillis(); /定义对字符串操作后的时间 long time = endTime - starTime; /计算对字符串

33、执行操作的时间 System.out.println(“Sting消耗时间:“+time);,6.5 可变字符串,StringBuffer类对象是可变的字符串,有改变字符串的若干方法。 StringBuffer类构造函数 StringBuffer() StringBuffer(int length) /设置初始容量 StringBuffer(String s) /设置初始值 StringBuffer类方法 String toString() /转换为String类型字符串 void setCharAt(int index , char c) /修改字符,6.5 可变字符串,新创建的String

34、Builder对象初始容量是16个字符。可以自行指定初始长度。如果附加的字符超过可容纳的长度,则StringBuilder对象将自动增加长度以容纳被附加的字符。 若要使用StringBuilder最后输出字符串结果。可使用toString()方法。 应用StringBuilder类中的方法可动态的执行添加、删除、插入等字符串的编辑操作。,StringBuilder类常用方法,append()方法 该方法用于向字符串生成器中追加内容,通过该方法的多个重载形式,可实现接受任何类型的数据。 intsert(int offset , arg)方法 该方法用于向字符串生成器中的指定位置插入数据内容。,S

35、tringBuilder bf = new StringBuilder(“hello“); bf.insert(5, “word“); System.out.println(bf.toString();,StringBuilder类常用方法,delete(int start , int end)方法 移除此序列的子字符串中的字符。 该子字符串从指定的start处开始,一直到索引end - 1处的字符,如果不存在这种字符,则一直到序列尾部。 如果start等于end,则不发生任何更改。,StringBuilder bf = new StringBuilder(“StringBuilder“);

36、bf.delete(5, 10); System.out.println(bf.toString();,StringBuilder类常用方法,【例】字符串循环右移3位进行加密。,StringBuilder s=new StringBuilder(“abcxyz“); char c; for(int i=0;i=a,知识点提炼,1) Java中使用String类来定义字符串。 2) 使用“+”或者concat()方法可以连接字符串 3) 使用length()方法可以获得字符串长度。 4) 使用equals()方法可以用来比较两个字符串内容是否相同。 5) 使用replace()方法可以替换字符串内容。,知识点提炼,6) 使用split()方法可以分割字符串。 7) 使用format()方法可以格式化字符串。 8) 使用正则表达式可以判断字符串是否符合某一指定模式。 9) 使用StringBuilder类可以创建内容可变的字符串。,作业,1. 编程将字符串逆序排列 2. 编程验证从键盘输入的字符串是否全部为数字字符 3. 编程验证从键盘输入的身份证号是否合法,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1