第4章 字符串.ppt_第1页
第4章 字符串.ppt_第2页
第4章 字符串.ppt_第3页
第4章 字符串.ppt_第4页
第4章 字符串.ppt_第5页
免费预览已结束,剩余37页可下载查看

下载本文档

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

文档简介

第4章 字符串,4.1 string 类的特点 4.2 string buffer类的特点 4.3 字符串的特殊处理方法,4.1 string 类的特点,string类是字符串常量类,该类对象在建立后不能修改。java编译器保证每个字符串常量都是string类对象。用双引号括住的一串字符即为字符串常量,比如“welcome to java!“,在通过编译器编译后成为string对象。因而,实例化一个string类对象既可以通过字符串常量,也可以通过系统提供的构造方法。,4.1.1 string类的基本方法 前面谈到过string类的一些基本属性,本节我们讨论string类的一些常用方法。 1string类初始化 string类可用字符串常量对其初始化,也可调用其构造方法来进行。例如: string s=“welcome to java wrold! “; string类主要构造方法见表4.1。,表4.1 string类的构造方法,例如: char char1= a, b, c, d; string s1=new string(); string s2=new string(char1); string s3=new string(char1,1,2); /生成字符串“bc” string s4=new string(char1,0,1,3); /生成字符串“bcd”,2字符串类的string访问 字符串的访问即字符串的引用,它包括得到字符串的长度,得到指定位置的字符或子串,以及得到某个字符或子串在字符串中的索引位置等。string类的功能很强,几乎覆盖了所有的字符串运算操作。表4.2给出了一些常用的字符串运算方法。,表4.2 string类的常用方法列表,例如: string s=“abcd“; int i=s.length(); / i=4 string s1=s.tolowercase(); /s1=“abcd“ string s2=s.touppercase(); /s2=“abcd“ char c=s.charat(3); / c=d string s3=s.substirng(2); /s3=“cd“ string s4=s.substirng(2,3); /s4=“c“,boolean b=s.regionmatches(1, “bce“,0,2); /b=false boolean b1=s.startwith(“ab“); /b1=true boolean b2=s.endwith(“de“); /b2=false int m=s.indexof(c); / m=2 int k=s.lastindexof(c); /k=2 string s5=s.replace(b, b); / s5=“abcd“ double d=5.234; string s6=string.valueof(d); /s6=“5.234“,4.1.2 string类的使用实例 在上一节中我们给出了string类的一些方法,可以看出,string类几乎覆盖了字符串的所有操作,给实际的编程带来了极大的方便。下面我们给出一个string类的使用实例。 例4.1 import java.awt.*; public class messages ,/* allows messages to be sent to the class squarefigure via a dialog box. */ public static void main (string args) squarefigure.create(); while (true) try ,string message1 = dialogbox.request (“supply message to be sent: “, “squarefigure.“); string message = message1.trim(); int startarg = message.indexof(); int endarg = message.indexof(); int commaposn; string argraw; string arg; string arg1raw; string arg1; string arg2raw;,string arg2; string name1 = message.substring(0, startarg); /取出类中的方法 string name = name1.trim(); if (endarg - startarg 1) argraw = message.substring(startarg+1, endarg); /得到方法的调用参数 arg = argraw.trim(); else arg = “; if (endarg != message.length() - 1),dialogbox.warn(“message not understood: try again!“); elseif (name.equals(“squarefigure.moveright“) squarefigure.moveright(integer.parseint(arg); else if (name.equals(“squarefigure.moveleft“) squarefigure.moveleft(integer.parseint(arg); elseif(name.equals(“squarefigure.moveup“) squarefigure.moveup(integer.parseint(arg); elseif(name.equals(“squarefigure.movedown“),squarefigure.movedown(integer.parseint(arg); elseif (name.equals(“squarefigure.setcolour“)if (arg.equals(“color.red“) squarefigure.setcolour(color.red); else if (arg.equals(“color.blue“) squarefigure.setcolour(color.blue); else if (arg.equals(“color.green“) squarefigure.setcolour(color.green); else dialogbox.warn(“invalid colour: try again“);, else dialogbox.warn(“message not understood: try again!“); catch (exception e) dialogbox.warn(“message not understood: try again!“); ,在该例中,squarefigure、dialogbox同样是我们提供的标准类,读者可从附录中查阅。 本程序首先生成一个红色的正方形(如图4.1所示),该正方形显示在窗口的正中间,同时会出现一个如图4.2所示的提示框。在该提示框中输入类squarefigure中的方法,就可以达到移动、改变颜色的目的。如在提示框中分别输入moveup(30)、setcolour(color.blue)后结果如图4.3、4.4所示。在程序中,我们用到了string类的一些方法,读者可自行分析。,图 4.1,图 4.2,图 4.3,图 4.4,4.2 string buffer类的特点,string类是字符串常量类,初始化后就不能进行修改,而string buffer类是字符串缓冲区,不仅可以接受修改,还可以读入整个文件。在java中,string buffer类是一个可以修改的字符串对象,使用起来比string类更加灵活、方便。java中并不支持运算符的重载,但“+”是个例外,例如,对语句: string s=“welcome “+“to“+“java! “;,编译器首先生成类stringbuffer的一个实例,然后连续调用方法append(),最后,再调用方法tostring()把stringbuffer对象转换为string对象。这相当于执行语句: string s=new string buffer(“welcome“).append(“to“).append(“java! “).tostring();,4.2.1 string buffer类的基本方法 与string类类似,string buffer类方法很多,下面我们也从初始化与访问方法两个方面加以介绍。 1string buffer类的初始化 string buffer类只能用初始化函数对其初始化,如果想按下面语句: string buffer s= “welcome to java! “; 对其初始化,则系统会给出出错信息。 string buffer的构造函数如表4.3所示。,表4.3 string buffer类的构造函数,2string buffer类的访问方法 string buffer类的方法主要就是添加字符和插入字符,如表4.4所示。,表4.4 string buffer类的主要方法,例如: string buffer sb=new string buffer(“this is a test string buffer“); sb.setlength(14); / sb=“this a test“ sb.set char(0, t ); /sb=“this is a test“ sb.append(5.12); / append a double number sb.append(true); /append a boolean number, then sb=“this is a test5.12true“ sb.insert(14, “value=“); /sb=“this is a test value=5.12true“,4.2.2 string buffer类的使用实例 下面给出一个字符串的反转操作实例。 例4.2 public class reverse string public reverse string() public static void main(string args) string message1 = dialog box.request,(“supply a string to be reversed: “); reversestring r=new reversestring(); transcript.print(r.reverse(message1); public string reverse(string s) int len=s.length(); stringbuffer sb=new stringbuffer();,for(int i=(len-1);i=0; i-) sb.append(s.charat(i); return sb.tostring(); ,当运行程序的时候,会出现一个对话框,要求输入一个字符串。如输入:“welcome to java world!“(如图4.5所示),则反转的结果如图4.6所示。,图 4.5,图 4.6,4.3 字符串的特殊处理方法,我们知道,基于网络的应用常常会碰到诸如对一个字符串进行解析,将其分解为多个子串的问题。如web页面表格设计中,浏览器可能以字符串的形式返回多个表格值。例如: string s=“name=boy,如果调用string、string buffer类中方法,当然也可以实现字符串的解析,但较为繁琐。为此,java类java.util提供了string tokenizer对字符串进行解析,我们将给出两个实现同一目的的例子加以说明。 例4.3 import java.util.*; public class string parse public string parse() , public static void main(string args) string s=“name=boy ,在该程序中,对string tokenizer对象进行初始化的同时,我们还对它进行了分隔符的设置(本例中,我们设置为字符“&”与“=”)。方法has more tokens()用于判断解析是否完毕;next token()得到下一个记号。本例的运行结果如图4.7所示。 下面是一个用string、string buffer的类方法实现字符串解析的例子。,图 4.7,例4.4 public class stringparse1 public stringparse1() public static void main(string args) stri

温馨提示

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

评论

0/150

提交评论