




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SISEJava语言程序设计实用教程Java语言程序设计实用教程SISEJava语言程序设计实用教程第八讲 字符串处理SISEJava语言程序设计实用教程3本章学习要点:lString类字符串的定义及其基本操作 lStringBuffer类字符串的定义及其基本操作 SISEJava语言程序设计实用教程字符串 l 字符串是字符的序列,它是组织字符的基本数据结构,从某种程度上来说有些类似于字符的数组。在Java中,字符串被当作对象对象来处理。l 程序中需要用到的字符串可以分为两大类, 一类是创建之后不会再做修改和变动创建之后不会再做修改和变动的字符串常量String类; 另一类是创建之后允许再做更
2、改和变化创建之后允许再做更改和变化的字符串变量StringBuffer类。SISEJava语言程序设计实用教程8.1 String类SISEJava语言程序设计实用教程字符串常量 l 使用“”定义字符串,使用定义字符。l “abc”,”欢迎使用Java”都是字符串。l a,b,c都是字符。l 注意:字符串对象是用双引号括起来的字符序列,字符串对象是用双引号括起来的字符序列,但字符串的内容并不包括双引号但字符串的内容并不包括双引号。l Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象,如:String s = “Hello world!”SISEJava
3、语言程序设计实用教程String常用的构造方法(P176,表8-1)l String():实例化一个空字符串l String(byte bytes) 使用当前平台的默认字符集从字节数组构造一个字符串 l String(byte bytes, int offset, int length) 使用当前平台的默认字符集从字节数组的一部分构造一个字符串l String(char value) 使用字符数组构造一个字符串l String(char value, int offset, int count) 使用字符数组的一部分构造一个字符串l String(String original) 根据一个字符
4、串新建一个字符串(复制字符串) l String(StringBuffer buffer) 从一个字符串缓冲对象构造一个字符串SISEJava语言程序设计实用教程练习 输入以下代码,看是什么输出结果:输入以下代码,看是什么输出结果: char chars=a,b,c,d,e,f; String str=new String(chars,1,4); System.out.println(str); byte ascii=65,66,67,68,69,70; String s=new String(ascii,2,3); System.out.println(s);SISEJava语言程序设计实用
5、教程练习提示 l int占4个字节,byte是1个字节,每个字节8位。JAVA中byte范围是-128127。l az对应的ASCII码数为97123。l AZ对应的ASCII码数为6591。SISEJava语言程序设计实用教程String类的方法及其应用(表8-2至表8-7)l 返回字符串长度 l 连接字符串l 拷贝字符串 l 比较字符串l 搜索字符 l 搜索子串 l 修改字符串SISEJava语言程序设计实用教程返回字符串长度length() :返回字符串的长度,其类型是int例如: String s1= new String(“a string”); System.out.println
6、(s.length();SISEJava语言程序设计实用教程连接字符串l “+”运算符 l concat()SISEJava语言程序设计实用教程“+”运算符l用用“+”+”运算符连接的是两个字符串常量,在进行运算符连接的是两个字符串常量,在进行+ +运算时可以在运算时可以在StringString对象的尾部追加对象。对象的尾部追加对象。l此外运算符可以使一个串与一个数值量进行连接。此外运算符可以使一个串与一个数值量进行连接。在连接时,当两个以上的数值量要进行算术运算时,在连接时,当两个以上的数值量要进行算术运算时,必须用()括起来,否则按字符串进行处理。必须用()括起来,否则按字符串进行处理。
7、String s1,s2;s1=+12+12;s2=+(12+12);System.out.println(s1);System.out.println(s2); String s1=new String(“aaa”);String s1=new String(“bbb”);s1=s1+s2;System.out.println(“s1+s2=”+s1);输出结果为输出结果为s1+s2=aaabbbSISEJava语言程序设计实用教程concat()方法用concat()可将两个字符串连接起来。格式: str1.concat(String str2)将str2连在str1的后面。SISEJav
8、a语言程序设计实用教程拷贝字符串l copyValueOf() l getChars() l toCharArray() l substring() l valueOf()SISEJava语言程序设计实用教程copyValueOf()方法lcopyValueOf()方法可将一个字符数组的全部或部分内容拷贝到一个String对象中q格式一:格式一:String str.copyValueOf(char data)String str.copyValueOf(char data)q格式二:格式二:String str.copyValueOf(char data,int offset,int cou
9、nt)String str.copyValueOf(char data,int offset,int count)qoffset指定数组部分元素的起始偏移量;qcount为数组部分元素的长度 SISEJava语言程序设计实用教程getChars()方法lgetChars()方法可将一个方法可将一个String对象的全部或部分内对象的全部或部分内容拷贝到一个字符数组中,格式如下:容拷贝到一个字符数组中,格式如下:src.getChars(int srcBegin,int srcEnd,char dst,int dstBegin)l参数说明:参数说明: SrcBegin String的起始下标的起
10、始下标 SrcEnd String的结束下标的结束下标 dst 数组名数组名 dstBegin 数组的起始下标数组的起始下标SISEJava语言程序设计实用教程SISEJava语言程序设计实用教程toCharArray()方法(P177例子)ltoCharArray()方法可将一个String对象的全部内容拷贝到一个字符数组中。它相当于分配一个新数组,长度为String的长度,内容为String对象所表示字符串序列。新数组必须先定义。l 引用格式如下: str.toCharArray()SISEJava语言程序设计实用教程substring()方法lsubstring()substring()
11、方法可将一个方法可将一个Str1Str1对象的全部或部分内容拷贝到对象的全部或部分内容拷贝到一个一个str2str2串中。引用格式如下:串中。引用格式如下:q 格式一:格式一:String str.substring(int beginIndex)String str.substring(int beginIndex)q 该方法将从该方法将从str1str1串的下标串的下标beginIndexbeginIndex到到str2str2串尾之间的内容串尾之间的内容拷贝到拷贝到str2str2串中串中q 格式二:格式二:q String str.substring(int beginIndex,in
12、t endIndex)String str.substring(int beginIndex,int endIndex)q 该方法将从该方法将从str1str1串的下标串的下标beginIndexbeginIndex到下标到下标endIndex-1endIndex-1之之间的内容拷贝到间的内容拷贝到str2str2串中串中SISEJava语言程序设计实用教程字符串类与其他类型的转换lstatic String valueOf(char data)static String valueOf(char data)lstatic String valueOf(char data,int offset
13、,int count)static String valueOf(char data,int offset,int count)lstatic String valueOf(boolean b)static String valueOf(boolean b)lstatic String valueOf(char c)static String valueOf(char c)lstatic String valueOf(int i) static String valueOf(int i) lstatic String valueOf(long l)static String valueOf(l
14、ong l)lstatic String valueOf(float f)static String valueOf(float f)lstatic String valueOf(double d)static String valueOf(double d)ltoString()toString()SISEJava语言程序设计实用教程比较字符串l equals() l equalsIgnoreCase() l regionMatches() l compareTo() SISEJava语言程序设计实用教程equals()方法lequals()方法实现两串(大小写一致)的比较,返回值为bool
15、ean类型。若相等则返回true,否则返回falsel格式如下: str1.equals(String str2)SISEJava语言程序设计实用教程equalsIgnoreCase()方法lequalsIgnoreCase()方法实现两串(大小写一致)的比较,返回值为boolean类型。若相等则返回true,否则返回falsel格式如下: str1.equalsIgnoreCase (String str2)SISEJava语言程序设计实用教程SISEJava语言程序设计实用教程regionMatches()方法lregionMatches()regionMatches()方法实现子串匹配相
16、等的比较,返回值为方法实现子串匹配相等的比较,返回值为booleanboolean类型。若相等则返回类型。若相等则返回truetrue,否则返回,否则返回falsefalse。格式如下:格式如下:lString str1. regionMatches(boolean ignoreCase,int String str1. regionMatches(boolean ignoreCase,int offset,String str2,int offset,int len)offset,String str2,int offset,int len)l参数说明:参数说明:qboolean ignor
17、eCase boolean ignoreCase 若为若为truetrue,则忽略大小写,则忽略大小写qint offsetint offset 确定确定str1str1的起始偏移量的起始偏移量qString str2String str2 str2 str2为参与比较的另一个串为参与比较的另一个串qint offsetint offset 确定确定str2str2的起始偏移量的起始偏移量qint len 确定子串长度确定子串长度SISEJava语言程序设计实用教程compareTo()方法lcompareTo()compareTo()方法实现两串按字典顺序比较大小。该方法返回一个方法实现两串
18、按字典顺序比较大小。该方法返回一个intint值。值。比较的依据是字符串中的各个字符的比较的依据是字符串中的各个字符的UnicodeUnicode值值lUnicodeUnicode(统一码、万国码、单一码):相对于(统一码、万国码、单一码):相对于ASCIIASCII,UnicodeUnicode为双为双字节长的字符集,到目前已定义了世界上绝大多数文字的常用字,字节长的字符集,到目前已定义了世界上绝大多数文字的常用字,ASCIIASCII字符集是它的子集,即字符集是它的子集,即UnicodeUnicode字符集兼容字符集兼容ASCIIASCII字符集。字符集。q 若返回为若返回为0 0,则两串
19、相等,则两串相等q 若返回为正数,则若返回为正数,则str1str1大于大于str2str2q 若返回为负数,则若返回为负数,则str1str1小于小于str2str2q 格式如下:格式如下:pareTo(String str2); SISEJava语言程序设计实用教程compareTo示例public static void main(String args) String s1 = a; String s2 = A; System.out.println(pareTo(s2); /运行结果 32 A的ASCII码为:65 a的ASCII码为:97 SISEJava语言程序设计实用教程字符串
20、字符串/* 字符串的排序,可以使用字符串的排序,可以使用String的的compareTo方法。方法。 如果返回负值,那么该串比如果返回负值,那么该串比参数中的串要小;参数中的串要小; 如果为正数,该串比参数中的串要大;如果为正数,该串比参数中的串要大; 若为若为0,则表示两串,则表示两串相等。相等。*/class SortString static String arr =Now,is,the,all; public static void main(String args ) for (int j=0;jarr.length;j+) for (int i=j+1;iarr.length;i
21、+) if (pareTo(arrj)0) String t=arrj; arrj=arri; arri=t; System.out.println(arrj); SISEJava语言程序设计实用教程程序的输出结果程序的输出结果Nowallisthe 从这个例子的结果可以看出,从这个例子的结果可以看出,compareTo区分字母的区分字母的大小写。词大小写。词Now排在最前是因为它以大写字母开始,在排在最前是因为它以大写字母开始,在字符集中大写字母字符集中大写字母AZ排在前,小写字母排在前,小写字母az排在后。排排在后。排在前面的字符对应的值小,排在后面的字符对应的值大在前面的字符对应的值小,
22、排在后面的字符对应的值大SISEJava语言程序设计实用教程例8-1,P179的说明l JOptionPane中的showMessageDialog方法,需要import javax.swing.JOptionPanel JOptionPane.showMessageDialog(出现位置, 显示字串,对话框标题,对话框类型); l 若出现位置是若出现位置是null,表示在屏幕中央,表示在屏幕中央。l 对话框类型有:JOptionPane.ERROR_MESSAGE, JOptionPane.INFORMATION_MESSAGE, JOptionPane.WARNING_MESSAGE, J
23、OptionPane.QUESTION_MESSAGE, JOptionPane.PLAIN_MESSAGE SISEJava语言程序设计实用教程例8-1,P179的说明SISEJava语言程序设计实用教程搜索字符l charAt(int index) l indexOf(int ch) l indexOf(int ch,int fromIndex) l lastindexOf(int ch) l lastindexOf(int ch,int fromIndex)SISEJava语言程序设计实用教程charAt(int index)l指定串中某字符的下标位置,返回下标所对应的字符字符。格式如下
24、:str.charAt(int index)SISEJava语言程序设计实用教程indexOf(int ch)与indexOf(int ch,int fromIndex)lindexOf(int ch)检索某个字符第一次出现的位置;若未检索到则返回-1。检索顺序由前到后搜索。格式如下: str.indexOf(int ch)lindexOf(int ch,int fromIndex)从串下标fromIndex开始,检索某个字符第一次出现的位置;若未检索到则返回-1。检索顺序从下标fromIndex开始向前搜索。格式如下: str. indexOf(int ch,int fromIndex)SI
25、SEJava语言程序设计实用教程lastindexOf(int ch)l检索某个字符最后一次出现的位置。若未检索到则返回-1。检索顺序由后到前。l格式如下: str.lastindexOf(int ch)SISEJava语言程序设计实用教程lastindexOf(int ch,int fromIndex)l从串下标fromIndex开始,检索某个字符最后一次出现的位置;若未检索到则返回-1。检索顺序从下标fromIndex开始向前搜索。l格式如下: str.lastindexOf(int ch,int fromIndex)SISEJava语言程序设计实用教程搜索子串l indexOf(Stri
26、ng str) l indexOf(String str,int fromIndex) l lastindexOf(String str) SISEJava语言程序设计实用教程indexOf(String str) l从某字符串str1中检索是否包含子串str2。若检索到则返回第一个子串的第一个字符下标;若未检索到则返回-1。检索顺序由前到后。l格式如下:str1.indexOf(String str2)SISEJava语言程序设计实用教程indexOf(String str,int fromIndex)l从某字符串str1中检索是否包含有子串str2。若检索到则返回第一个子串的第一个字符的下
27、标;若未检索到则返回-1。检索顺序从下标fromIndex开始向后搜索。l格式如下: str1.indexOf(String str2,int fromIndex)SISEJava语言程序设计实用教程lastindexOf(String str) l从某字符串str1中检索是否包含有一些子串str2。若检索到则返回第一个子串的第一个字符的下标;若未检索到则返回-1。检索顺序由后到前。l格式如下:str1.lastindexOf(String str2)SISEJava语言程序设计实用教程修改字符串l replace () l toLowerCase() l toUpperCase() l tr
28、im () SISEJava语言程序设计实用教程replace()方法q该方法用新字符newChar替换所有旧字符oldChar。若指定的若指定的oldCharoldChar字符未出现在字符串中,则不替换字符未出现在字符串中,则不替换。q格式如下:qstr.replace(char oldChar,char newChar)SISEJava语言程序设计实用教程toLowerCase()方法q该方法将一个String对象中的所有大写字母转换为小写q格式如下:q str.toLowerCase() SISEJava语言程序设计实用教程toUpperCase()q该方法将一个String对象中的所有
29、小写字母转换为大写。q格式如下:qString str.toUpperCase()SISEJava语言程序设计实用教程trim()方法q该方法删除String串中的首尾空格q格式如下:qString str.trim() SISEJava语言程序设计实用教程q例:例:String类的常用方法示例。类的常用方法示例。qpublic class StringDemo2q public static void main(String args )q String s= Hello ;q System.out.println(s=+s);q/ / 将将 s 中 的 所 有 大 写 字 母 转 变 为
30、小 写中 的 所 有 大 写 字 母 转 变 为 小 写 System.out.println(s.toLowerCase()=+s.toLowerCase(); / 将将s中的所有小写字母转变为大写中的所有小写字母转变为大写 System.out.println(s.toUpperCase()=+s.toUpperCase(); / 去掉前后空格去掉前后空格q System.out.println(s.trim()=+s.trim(); q/ / 取 子 串取 子 串 ( 从 指 定 的 开 始 位 置 到 最 后从 指 定 的 开 始 位 置 到 最 后 ) System.out.prin
31、tln(s.substring(5)=+s.substring(5); / 取子串取子串(从指从指定 的 开 始 位 置 到 指 定 的 结 束 位 置定 的 开 始 位 置 到 指 定 的 结 束 位 置 , 但 不 包 括 结 束 位 置但 不 包 括 结 束 位 置 ) System.out.println(s.substring(3,5)=+s.substring(3,5); q / 将将s中所有的中所有的l替换为替换为t以生成新串以生成新串 q String news=s.replace(l,t); q System.out.println(replace all l with t:
32、 +news);q qSISEJava语言程序设计实用教程8.2 StringBuffer类SISEJava语言程序设计实用教程StringBuffer类 l StringString类用来表示那些创建后就不会再改变的字符类用来表示那些创建后就不会再改变的字符串串, ,l 而而StringBuffer StringBuffer 类用来表示内容可变的字符串,并类用来表示内容可变的字符串,并提供了修改底层字符串的方法。提供了修改底层字符串的方法。l 当当StringString对象的内容需要变化时,则系统需要花费对象的内容需要变化时,则系统需要花费较多的时间进行转化。使用较多的时间进行转化。使用S
33、tringBufferStringBuffer的版本的的版本的方法比使用方法比使用StringString版本的一般都快十倍以上。如果版本的一般都快十倍以上。如果你对字符串中的内容经常进行操作,特别是内容要你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用修改时,那么使用StringBufferStringBuffer,如果最后需要,如果最后需要StringString,那么使用,那么使用StringBufferStringBuffer的的toString()toString()方法方法好了!也许这就是你的程序的性能瓶颈好了!也许这就是你的程序的性能瓶颈 SISEJava语言程序设计
34、实用教程构造方法 l StringBuffer()l StringBuffer(int len)l StringBuffer(String str)SISEJava语言程序设计实用教程StringBuffer的基本操作1(1)分配/获取字符串的长度 void setLength(int newLength) int length()(2)分配/获取字符串的容量 void ensureCapacity(int minCapacity) int capacity()(3)字符串的检索和子串 void getChars(int srcBegin,int srcEnd,char dst,int dstBegin) String substring(int beginindex)和 String substring(int beginindex,int endindex)SISEJava语言程序设计实用教程StringBuffer的基本操作2(4)字符串的修改 StringBu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025茶叶项目投资经营合同
- 天网设备维修合同范本
- 内部分红合同范本
- 沙食料供货合同范本
- 中药硫黄销售合同范本
- 上海宝马销售合同范本
- 公路监控工程合同范本
- 专利公众意见 合同范本
- 2025关于企业股权转让合同
- 机械施工工程合同范本
- 公司领导财务知识培训课件
- 2025年郑州银行招聘考试(行政能力测验)历年参考题库含答案详解(5套)
- 园艺生物技术应用与发展
- 子痫患者护理查房
- 2025上海市八年级升九年级数学暑假提升讲义:相似三角形压轴题(六大题型)原卷版
- 2025年工业互联网工程技术人员考核试题题库及答案
- 农行OCRM系统讲解
- 医疗护理员职业技能竞赛试题及答案
- 2025年高端美食主题餐厅餐饮服务整体外包合同
- 体育课培训课件
- 工贸安全员考试题库及答案大全
评论
0/150
提交评论