第六章 字符串-2010.ppt

上传人:hyn****60 文档编号:71439399 上传时间:2023-02-03 格式:PPT 页数:34 大小:412.50KB
返回 下载 相关 举报
第六章 字符串-2010.ppt_第1页
第1页 / 共34页
第六章 字符串-2010.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《第六章 字符串-2010.ppt》由会员分享,可在线阅读,更多相关《第六章 字符串-2010.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第六章第六章 字符串字符串Java 程序设计程序设计目目 录录6.1 String类6.2 StringBuffer类6.3 StringTokenizer类nJava语言中,把字符串作为语言中,把字符串作为对象对象来处理。来处理。njava.lang包包6.1 String类类1 1字符串常量字符串常量2 2创建字符串对象创建字符串对象3 3引用字符串常量对象引用字符串常量对象4 4String String 类的常用方法类的常用方法5 5字符串与基本数据的相互转化字符串与基本数据的相互转化6 6对象的字符串表示对象的字符串表示7 7字符串与字符、字节数组字符串与字符、字节数组1 1字符串常

2、量字符串常量字符串常量是用双引号括住的一串字符。字符串常量是用双引号括住的一串字符。Hello World!,1234.987字符串的字符使用字符串的字符使用UnicodeUnicode国际统一字符编码,国际统一字符编码,将字符将字符串存储于串存储于char型数组中,型数组中,一个字符占两个字节一个字符占两个字节使用双引号得到的字符串常量是一个使用双引号得到的字符串常量是一个StringString类的类的对象对象 System.out.println(ABC.length();字符串的内容是字符串的内容是固定不可变固定不可变(immutable)(immutable)的的StringStri

3、ng是一个是一个finalfinal类类2 2创建字符串对象创建字符串对象使用使用String类的构造方法创建字符串对象:类的构造方法创建字符串对象:使用使用默认无参构造方法默认无参构造方法创建一个空字符串创建一个空字符串 传递参数生成一个该字符串的传递参数生成一个该字符串的副本副本 n第一、二种构造函数不推荐使用第一、二种构造函数不推荐使用因为因为StringString是不可变的,是不可变的,不提倡这种不提倡这种实例化实例化2 2创建字符串对象创建字符串对象使用使用String类的构造方法创建字符串对象:类的构造方法创建字符串对象:使用字符数组创建一个字符串使用字符数组创建一个字符串 用不

4、同方法生成字符串用不同方法生成字符串abc:3 3引用字符串常量对象引用字符串常量对象n字符串常量是对象,因此可以把字符串常量的引字符串常量是对象,因此可以把字符串常量的引用赋值给一个字符串变量。用赋值给一个字符串变量。nString s1,s2;s1=“World”;s2=“World”;ns1,s2具有相同的引用,因此具有相同的实体。具有相同的引用,因此具有相同的实体。0 x12ac0 x12ac“World”s1s23 3引用字符串常量对象引用字符串常量对象常量字符串创建后会存储于常量字符串创建后会存储于字符串常量池字符串常量池中中享元模式享元模式intern()intern()方法通过

5、方法通过equals()equals()方法判断常量池方法判断常量池中是否包含该字符串中是否包含该字符串如果没有则创建一个字符串常量添加到池中,如果没有则创建一个字符串常量添加到池中,并返回该常量的引用;并返回该常量的引用;如果有,则返回池中字符串的引用如果有,则返回池中字符串的引用【例:例:FlyweightTest.java】问题问题n语句语句Strings=newString(“xyz”);创建了几个创建了几个String Object?n一共两个对象一共两个对象,“xyz”本身为一个本身为一个String对象,对象,存储在存储在constantpool中,中,new 运算符在运算符在h

6、eap上会创上会创建另一个内容为建另一个内容为“xyz”的对象的对象4 4StringString类的常用方法类的常用方法1.publicintlength()获取一个字符串的长度获取一个字符串的长度注意:字符串长度为注意:字符串长度为Unicode字符字符数目数目问题:问题:数组有没有数组有没有length()这个方法这个方法?2.publicbooleanequals(Strings)比较两个字符串对象的比较两个字符串对象的实体实体是否相同是否相同equalsIgnoreCase(Strings)运算符运算符=比较两个对象是否引用同一个实例。比较两个对象是否引用同一个实例。String s

7、1,s2;s1=“World”;s2=“World”;s3=“world”;s1.equals(s2)true/false?s1=s2 true/false?s1.equalsIgnoreCase(s3)true/false?3.publicbooleancontains(CharSequences)判断当前字符串是否含有指定的字符序列判断当前字符串是否含有指定的字符序列s4.publicbooleanstartsWith(Strings)判断当前字符串对象的判断当前字符串对象的前缀前缀是否是字符串是否是字符串spublicbooleanendsWith(Strings)判断当前字符串对象的判

8、断当前字符串对象的后缀后缀是否是字符串是否是字符串s 5.publicintcompareTo(Strings)基于字符串中各个字符的基于字符串中各个字符的 Unicode 值(值(字典序字典序)比较字符串大小比较字符串大小当前字符串与当前字符串与s s相同,返回值相同,返回值0 0;大于大于s s,返回正值;,返回正值;小于小于s s,返回负值。,返回负值。“abcabc”“ABCABC”publicintcompareToIgnoreCase(Strings)忽略大忽略大小写小写6.publicintindexOf(Strings)publicintindexOf(Strings,ints

9、tartpoint)搜索字符串的功能搜索字符串的功能从当前字符串的从当前字符串的startpoint开始检索开始检索s,并返回首次出现,并返回首次出现s的位置。如果没有检索到字符串的位置。如果没有检索到字符串s,返回,返回-1。String tom=“I am a good cat”;tom.indexOf(“good”,2);/7tom.indexOf(“w”,2);/-1 publicintlastIndexOf(Strings)从当前字符串的头开始检索字符串从当前字符串的头开始检索字符串s,并返回最后出,并返回最后出现现s的位置。没有检索到的位置。没有检索到s,返回,返回-1。7.pub

10、liccharcharAt(intindex)返回字符串中返回字符串中index+1位置上的字符位置上的字符如果如果index超出了范围,则抛出超出了范围,则抛出StringIndexOutOfBoundsException异常异常8.publicvoidgetChars(intsrcbegin,intend,charbuf,intdstbegin)将字符从此字符串复制到目标字符数组将字符从此字符串复制到目标字符数组 srcbegin字符串中要复制的第一个字符的索引字符串中要复制的第一个字符的索引 end字符串中要复制的最后一个字符字符串中要复制的最后一个字符之后之后的索引的索引 字符数组字符

11、数组buf存放目的字符串,存放目的字符串,dstbegin 为提取的字符串在目的串中的起始位置。为提取的字符串在目的串中的起始位置。字符串对象修改字符串对象修改nsubstring方法方法ntrim方法方法nreplace方法方法nconcat方法方法nsplit方法方法ntoLowerCase方法方法nto toUpperCase方法方法注意:修改不会改变原有字符串,会返回新的字注意:修改不会改变原有字符串,会返回新的字符串符串1.publicStringsubstring(intstartpoint)publicStringsubstring(intstart,intend)参数参数:st

12、art Index-开始处的索引(包括)。开始处的索引(包括)。end Index-结束处的索引(结束处的索引(不包括不包括)。)。例:例:smiles.substring(1,5)returns mile 2.publicStringtrim()去掉前后空格去掉前后空格。3.publicStringsplit(Stringregex)根据正则表达式匹配来拆分字符串,得到拆分后根据正则表达式匹配来拆分字符串,得到拆分后的字符串数组,不包括结尾空字符串的字符串数组,不包括结尾空字符串 3.public String replaceAll(char oldChar,char newChar)将所有

13、字符将所有字符oldChar替换为替换为newChar,并返回替换后的字符,并返回替换后的字符串串4.public String concat(String str);将当前字符串对象与给定字符串将当前字符串对象与给定字符串str连接连接起来,与重载操作起来,与重载操作符符“”等价。等价。10.public String toLowerCase();将当前字符串转换为小写将当前字符串转换为小写11.public String toUpperCase();将当前字符串转换为大写将当前字符串转换为大写 例子:例子:【例例6-1】5 5字符串与基本数据的相互转化字符串与基本数据的相互转化字符串转化为

14、整型字符串转化为整型public static int parseInt(String s)public static byte parseByte(String s)public static short parseShort(String s)public static long parseLong(String s)5 5字符串与基本数据的相互转化字符串与基本数据的相互转化字符串转化为浮点型字符串转化为浮点型 public static float parseFloat(String s)public static double parseDouble(String s)5 5字符串与基

15、本数据的相互转化字符串与基本数据的相互转化数值转化为字符串数值转化为字符串npublic static String toBinaryString(long i)public static String toOctalString(long i)public static String toHexString(long i)public static String toString(long i,int p)返回返回i 的的p进制表示进制表示5 5字符串与基本数据的相互转化字符串与基本数据的相互转化数值转化为字符串数值转化为字符串 public static String valueOf(by

16、te n)public static String valueOf(int n)public static String valueOf(float n)public static String valueOf(double n)public static String valueOf(boolean b)public static String valueOf(Object obj)public static String valueOf(char data)例子:例子:【例例6-2】6 6对象的字符串表示对象的字符串表示n所有的类都默认是所有的类都默认是java.lang包中包中Objec

17、t类的子类或类的子类或间接子类。间接子类。nObject类有一个类有一个public方法方法toString(),一个对象通,一个对象通过调用该方法可以获得该对象的字符串表示。过调用该方法可以获得该对象的字符串表示。n如果没有重写该方法,该类所创建的对象调用如果没有重写该方法,该类所创建的对象调用toString()方法得到的字符串格式为:方法得到的字符串格式为:类名类名对象的引用对象的引用 例子:例子:【例例6-3】7 7字符串与字符、字节数组字符串与字符、字节数组1.字符串与字符数组字符串与字符数组String(char)String(char,intoffset,intlength)pu

18、blicvoidgetChars(intstart,intend,charc,intoffset)将将start到到end-1位置上的字符复制到数位置上的字符复制到数组组c中,并从中,并从c的的offset开始存放开始存放publicchartoCharArray()初始化一个字符数组,并将字符串对象的全部字初始化一个字符数组,并将字符串对象的全部字符复制到该数组中。符复制到该数组中。例子:例子:【例例6-4】2.字符串与字节数组字符串与字节数组String(byte)通过使用平台的默认字符集解码指定的通过使用平台的默认字符集解码指定的 byte 数组,数组,构造一个新的构造一个新的 Stri

19、ng String(byte,intoffset,intlength)用指定的字节数组的一部分,用指定的字节数组的一部分,即从数组起始位置即从数组起始位置offset开始取开始取length个字节,使用平台默认个字节,使用平台默认的字符编码解码字节数组构造一个新的的字符编码解码字节数组构造一个新的 String。publicbytegetBytes()使用平台的默认字符集将此使用平台的默认字符集将此 String 编码为编码为 byte 序列,并将结序列,并将结果存储到一个新的果存储到一个新的 byte 数组中数组中获得平台的默认字符集获得平台的默认字符集-Charset.defaultCha

20、rset();如果在编码或解码时指定了字符集如果在编码或解码时指定了字符集,需要检查受查异常需要检查受查异常“UnsupportedEncodingException”例子:例子:【例例6-5】6.2 StringBuffer 类类nString类类创建的字符串对象是不可修改的。创建的字符串对象是不可修改的。String中对字符串的操作是对新生成的一个源操作串对象的中对字符串的操作是对新生成的一个源操作串对象的拷贝拷贝进行的,其操作的结果不影响源串。进行的,其操作的结果不影响源串。nStringBuffer类类能创建能创建可修改可修改的字符串序列,该对象实体的内存空间可以自的字符串序列,该对象

21、实体的内存空间可以自动的改变大小,便于存放可变的字符串。动的改变大小,便于存放可变的字符串。StringBuffer中对字符串的修改操作是对中对字符串的修改操作是对源串本身源串本身进行的,进行的,操作之后源串的值发生了变化。操作之后源串的值发生了变化。StringBuffer类的构造方法类的构造方法StringBuffer();/*分配分配16个字符的缓冲区个字符的缓冲区*/StringBuffer(int len);/*分配分配len个字符的缓冲区个字符的缓冲区*/StringBuffer(String s);/*除了按照除了按照s的大小分配空间外的大小分配空间外,再分配再分配16个字符个字

22、符的缓冲区的缓冲区*/StringBuffer类的常用方法类的常用方法nlength()、charAt(int n)、capacity()capacity()用来得到字符串缓冲区的容量,它与方法用来得到字符串缓冲区的容量,它与方法length()所返回的值通常是不同的。所返回的值通常是不同的。nStringBuffer append(String str);用来在已有字符序列末尾添加一个字符串用来在已有字符序列末尾添加一个字符串str。nStringBuffer insert(int offset,String str);用来在字符序列的索引用来在字符序列的索引offset位置处插入字符串位置

23、处插入字符串str。如果操作后的字符超出已分配的缓冲区如果操作后的字符超出已分配的缓冲区,则系统会自动则系统会自动为它分配额外的空间。为它分配额外的空间。StringBuffer类的常用方法类的常用方法nvoid setCharAt(int index,char ch);用来设置指定索引用来设置指定索引index位置的字符值。位置的字符值。nStringBuffer delete(int startIndex,int endIndex)从当前从当前StringBuffer对象实体中的字符串中删除一个子字对象实体中的字符串中删除一个子字符串符串,删除从删除从startIndex到到endInde

24、x1的字符的字符nStringBuffer replace(int startIndex,int endIndex,String str)从从startIndex到到endIndex-1的字符串被替换的字符串被替换n例例6-6字符串字符串+操作操作n运算符运算符+可用来实现字符串的连接:可用来实现字符串的连接:String s=He is+age+years old.;n其他类型的数据与字符串进行其他类型的数据与字符串进行“+”运算时,将自运算时,将自动转换成字符串。动转换成字符串。具体过程如下:具体过程如下:String s=new StringBuffer(he is).append(“a

25、ge”).append(years old).toString();6.3 StringTokenizer 类类njava.util包中的包中的StringTokenizer类:将字符串分解成类:将字符串分解成可被独立使用的单词。可被独立使用的单词。n构造方法:构造方法:StringTokenizer(String s)为字符串为字符串s构造一个分析器。使用默认的分隔符集合,构造一个分析器。使用默认的分隔符集合,即空格符(若干个空格被看做一个空格)、换行符、即空格符(若干个空格被看做一个空格)、换行符、回车符、回车符、Tab符等。符等。StringTokenizer(String s,Stri

26、ng delim)为字符串为字符串s构造一个分析器,参数构造一个分析器,参数delim中的字符的任中的字符的任意排列组合都被作为分隔符。意排列组合都被作为分隔符。nString nextToken()方法逐个获取字符串分析器中方法逐个获取字符串分析器中的语言符号(单词),每当获取到一个语言符号,的语言符号(单词),每当获取到一个语言符号,字符串分析器中的负责计数的变量的值就自动减字符串分析器中的负责计数的变量的值就自动减一,该计数变量的初始值等于字符串中的单词数一,该计数变量的初始值等于字符串中的单词数目。目。ncountTokens()方法可以得到计数变量的值。方法可以得到计数变量的值。nhasMoreTokens()和和nextToken()来循环处理文本来循环处理文本中的单词中的单词n例例6-7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁