



4.4 字符串
9月15日,10:30,晴
我:“字符串是由很多字符构成的一串数据吗?”
KNOWALL:“对,就和我们的汉语句子一样,一句话由很多个词和字构成,如图4-12所示。”
图4-12 字符串
我:“能否说得详细些?”
KNOWALL:“字符串(String)是由零个或多个字符组成的有限序列,一般记为 s='a1a2…an'(n>=0)。它是编程语言中表示文本的数据类型。通常以串的整体作为操作对象,如在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。”
在Java程序中,使用new关键字来创建String实例如下:
在上面的这段代码中,用户创建了一个String类,并把它赋给变量,但它还是一个空的字符串,接下来就为这个字符串赋值。
在程序中,用户可以将两句代码合并产生一种简单的字符串表示。
除了上面的表示方法,还有一种字符串进行表示:
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/ String1.java】如下:
执行代码,得到如图4-13所示的结果。
图4-13 字符串示例
9月15日,10:40,晴
我:“怎么这么早就学习类了啊?我记得类是Java体系的核心内容,应该在后面章节才会学到。”
KNOWALL:“对,类是Java面向对象编程的根本,因为需求,本节只简要讲解String类,类的具体内容将在本书的后面章节进行讲解。”
我:“先简单说说类吧,就当提前练习了。”
KNOWALL:“类就是对象的模板(Template),而对象就是类的一个实例(Instance)。”
在Java程序里,String类是用来操作字符串的,其中有许多方法可供编程者使用,下面将讲解一些常用的方法。
在Java程序设计里,有一个方法是用来返回String指定索引的位置,用户需要注意的是,它的数字是从零开始的,其格式如下:
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/suo.java】如下:
图4-14 索引示例
执行上面的代码,得到如图4-14所示的结果。
提示: 在上面的程序中,有一个在字符串变量中的“x”,然后给它一个值是“asdfghjk”的字符串,通过倒数第3行取这个字符串的脚码为“5”的字符,因为脚码是从“0”开始的。很多人错误地认为是字母“g”,可真正的结果并不是,脚码为“5”,实际上是第6个字母,所以执行结果显示为“h”。
字符串的追加很容易理解,是指在字符串的末尾再添加字符串。追加字符串是一个比较常用的方法,希望用户牢牢记住,字符串的追加十分简单,用户只需要记住就可以了,其格式如下:
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/zhuijiade.java】如下:
执行程序,得到如图4-15所示的结果。
比较字符串是将两个字符串进行比较,看是否相同,如果相同,则返回一个值true,如果不相同,则返回一个false值,其格式如下:
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/bijiaode.java】如下:
执行代码,得到如图4-16所示的结果。
图4-15 追加字符串示例
图4-16 比较字符串示例
在String方法中,有一个方法可以求字符串的长度,其格式如下:
我:“还是不太明白!”
KNOWALL:“我给你举个例子吧,其代码【光盘:源代码/第4章/Qiuzifu.java】如下。”
执行代码,得到如图4-17所示的结果。
KNOWALL:“结合代码并看执行效果,应该能体会到真正含义了吧!”
替换就是用一个东西替换另一种东西。Java的替换要完成两个动作,先查找替换目标,然后将其替换掉。使用它替换字符串十分简单,用户只需要记住这个格式就可以了,其格式如下:
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/Tihuanzi.java】如下:
执行代码,得到如图4-18所示的结果。
图4-17 求字符串长度示例
图4-18 替换字符串示例
在有些时候,需要从长长的字符串中截取一段字符串,这有两种格式可以实现。
第一种方法格式如下:
第二种方法格式如下:
上面两种方法都可以截取,下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/Jiequde.java】如下:
执行代码,得到如图4-19所示的结果。
程序中有时需要对字符串的字母进行转换,在String类中,用户可以使用方法进行互换,将大写字母转换成小写字母,可以使用下面的方法,其格式如下:
小写转大写的格式如下:
测试3: 将一个字符串中的大写字母转换成小写字母。
解决思路: 思路如下:
(1)定义字符串x并赋值。
(2)实现字母大小写转换。
编写的实现代码【光盘:源代码/第4章/ BIG1.java】如下:
执行代码,得到如图4-20所示的结果。
图4-19 字符串的截取示例
图4-20 大写字母转换为小写字母示例
有时为特殊需要,需要将字符串中的空白符去除,其实现格式如下:
我:“太笼统了,看不明白!”
KNOWALL:“我用一段代码来演示具体的使用方法,其代码【光盘:源代码/第4章/KONGBAI.java】如下。”
图4-21 去除空白符示例
执行代码,得到如图4-21所示的结果。
提示: 用上面的这个方法去除空白时,只能去除首字母以前的空白,字符中间的空白不能消除。
9月15日,11:20,晴
我:“StringBuffer类有什么作用?”
KNOWALL:“ StringBuffer是Java中另一种对字符串操作的类,当需要对字符串进行大量的修改时,就要使用StringBuffer类。”
在String类中可以追加字符,在StringBuffer里也可以追加字符,其格式如下:
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/ Zhui1.java】如下:
执行代码,得到如图4-22所示的结果。
追加字符总是在末尾添加内容,倘若需要在字符中添加内容,需要用到如下方法,其格式如下:
上述方法的功能是:将第2个参数的内容添加到第一个参数指定的位置。换句话说,第一个参数表示要插入的起始位置,第2个参数是需要插入的内容,它可以是包括String的任何数据类型。
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/ Cha.java】如下:
执行代码,得到如图4-23所示的结果。
图4-22 追加字符示例
图4-23 插入字符示例
这种方法主要是将字符颠倒,如“ABC”,颠倒过来就变成“CBA”,其格式如下:
下面通过一段代码进行讲解,其代码【光盘:源代码/第4章/dian.java】如下:
执行代码,得到如图4-24所示的结果。