3.4 字符串
知识点讲解:
字符串(String)是由0个或多个字符组成的有限序列,是编程语言中表示文本的数据类型。通常以字符串的整体作为操作对象,例如在字符串中查找某个子串、求取一个子串、在字符串的某个位置插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置的字符都相等。假设p、q是两个字符串,求q在p中首次出现的位置的运算叫作模式匹配。字符串的两种最基本的存储方式是顺序存储和链接存储。
3.4.1 字符串的初始化
在Java程序中,使用关键字new来创建String实例,具体格式如下所示。
String a=new String( );
上面这行代码创建了一个名为String的类,并把它赋给变量,但它此时是一个空的字符串。接下来就为这个字符串赋值,赋值代码如下所示。
a="I am a person Chongqing"
在Java程序中,我们将上述两句代码合并,就可以产生一种简单的字符串表示方法。
String s=new String ("I am a person Chongqing");
除了上面的表示方法,还有表示字符串的如下一种形式。
String s= ("I am a person Chongqing");
实例3-16
初始化一个字符串
源码路径:daima\3\Stringone.java
实例文件Stringone.java的主要实现代码如下所示。
public static void main(String[] args) { ① String str = "上邪"; ② System.out.println("OK"); ③ String cde = "别人笑我太疯癫"; ④ System.out.println(str + cde); }
拓展范例及视频二维码
范例3-16-01:格式化一个字符串
源码路径:演练范例\3-16-01\
范例3-16-02:扩展赋值运算符的功能
源码路径:演练范例\3-16-02\
行①定义一个字符串变量str,设置str的初始值是“上邪”。
行②使用println()函数输出字符串“OK”。
行③定义一个字符串变量cde,设置cde的初始值是“别人笑我太疯癫”。
行④使用println()函数输出字符串str和cde的组合。
执行后的结果如图3-18所示。
图3-18 执行结果
注意:字符串并不是原始的数据类型,而是一种复杂的数据类型,对它进行初始化的方法不止一种,但也没有规定哪种方法最优秀,用户可以根据自己的习惯使用。
3.4.2 String类
在Java程序中可以使用String类来操作字符串,在该类中有许多方法可以供程序员使用。
1.索引
在Java程序中,通过索引函数charAt()可以返回字符串中指定索引的位置。读者需要注意的是,这里的索引数字从零开始,使用格式如下所示。
public char charAt(int index)
2.追加字符串
追加字符串函数concat()的功能是在字符串的末尾添加字符串,追加字符串是一种比较常用的操作,具体语法格式如下所示。
Public String concat (String S)
实例3-17
使用索引方法
源码路径:daima\3\suoyin.java
实例文件suoyin.java的主要实现代码如下所示。
public class suoyin { public static void main(String args[]){ ① String x="dongjiemeili"; ② System.out.println(x.charAt(5)); } }
拓展范例及视频二维码
范例3-17-01:使用追加方法
源码路径:演练范例\3-17-01\
范例3-17-02:货币金额的大写形式
源码路径:演练范例\3-17-02\
行①定义一个字符串变量x,设置x的初始值是“dongjiemeili”。
行②使用println()函数输出字符串变量x中索引值为5的字母。因为下标从“0”开始,所以初学者可能会理解为字母“j”,可真正的结果并不是,下标为“5”,实际上是第6个字母。执行后的结果如图3-19所示。
图3-19 执行结果
3.比较字符串
比较字符串函数equalsIgnoreCase()的功能是对两个字符串进行比较,看是否相同。如果相同,返回一个值true;如果不相同,返回一个值false。格式如下。
public Boolean equalsIgnoreCase(String s)
4.取字符串长度
在String类中有一个方法可以获取字符串的长度,语法格式如下所示。
public int length ( )
实例3-18
使用字符串比较方法
源码路径:daima\3\bijiao.java
实例文件bijiao.java的主要实现代码如下所示。
public static void main(String args[]){ ① String x="student"; ② String xx="STUDENT"; ③ String y="student"; ④ String z="T"; ⑤ System.out.println(x.equalsIgnoreCase(xx)); ⑥ System.out.println(x.equalsIgnoreCase(y)); ⑦ System.out.println(x.equalsIgnoreCase(z)); }
拓展范例及视频二维码
范例3-18-01:使用求字符串长度的方法
源码路径:演练范例\3-18-01\
范例3-18-02:用String类格式化当前日期
源码路径:演练范例\3-18-02\
行①②③④定义4个字符串变量x、xx、y和z,设置x的初始值是“student”,设置xx的初始值是“STUDENT”,设置y的初始值是“student”,设置z的初始值是“T”。
行⑤使用函数equalsIgnoreCase()比较x和xx的值是否相等,然后使用println()函数输出比较结果。
行⑥使用函数equalsIgnoreCase()比较x和y的值是否相等,然后使用println()函数输出比较结果。
行⑦使用函数equalsIgnoreCase()比较x和z的值是否相等,然后使用println()函数输出比较结果。
执行后的结果如图3-20所示。
图3-20 比较字符串的结果
5.替换字符串
替换是两个动作,第一个是查找,第二个是替换。在Java中实现替换字符串的方法十分简单,只需要使用replace()方法即可实现。此方法的声明格式如下所示。
public String replace (char old, char new)
6.字符串的截取
有时候,经常需要从长的字符串中截取一段字符串,此功能可以通过substring()方法实现,此方法有两种语法格式。
第一种格式如下。
public String substring(int begin)
第二种格式如下。
public String substring (int begin, int end)
实例3-19
使用字符串替换方法
源码路径:daima\3\Tihuan.java
实例文件Tihuan.java的主要实现代码如下所示。
public static void main(String args[]){ ① String x="我想我要走了"; ② String y=x.replace(’走’, ’去’); ③ System.out.println(y); }
拓展范例及视频二维码
范例3-19-01:使用字符串截取方法
源码路径:演练范例\3-19-01\
范例3-19-02:字符串的大小写转换
源码路径:演练范例\3-19-02\
行①定义一个字符串变量x,设置x的初始值是“我想我要走了”。
行②定义一个字符串变量y,设置y的初始值是将x中的“走”替换为“去”之后的值。
行③使用println()函数输出变量y的值。执行后的结果如图3-21所示。
图3-21 替换字符串的结果
7.字符串大小写互转
许多时候需要对字符串中的字母进行转换,在String类里,用户可以使用专用方法进行互换。将大写字母转换成小写字母的方法的语法格式如下所示。
public String toLowerCase ( )
将小写字母转换成大写字母的方法的语法格式如下所示。
Public String toUpperCase ( )
8.消除字符串中的空格字符
在字符串中可能有空白字符,有时在一些特定的环境中并不需要这样的空白字符,此时我们可以使用trim()方法去除空白,此方法的语法格式如下所示。
pbulic String trim ( )
实例3-20
将大写字母转换成小写字母
源码路径:daima\3\Daxiao1.java
实例文件Daxiao1.java的主要实现代码如下所示。
public static void main(String args[]){ ① String x="I LOVE YoU! ! "; //字母大小写转换 ② String y=x.toLowerCase(); ③ System.out.println(x); ④ System.out.println(y); }
拓展范例及视频二维码
范例3-20-01:将小写字母转换成大写字母
源码路径:演练范例\3-20-01\
范例3-20-02:使用trim()方法
源码路径:演练范例\3-20-02\
行①定义一个字符串变量x,设置x的初始值是“I LOVE YoU!!”。
行②定义一个字符串变量y,设置y的初始值是将x中的字母都转换为小写后的值。
行③④使用println()函数分别输出变量x和y的值。执行后的结果如图3-22所示。
图3-22 执行结果
3.4.3 StringBuffer类
StringBuffer类是Java中另一个重要的操作字符串的类,当需要对字符串进行大量的修改时,使用StringBuffer类是最佳选择。接下来将详细讲解StringBuffer类中的常用方法。
1.追加字符
在StringBuffer类中实现追加字符功能的方法的语法格式如下所示。
public synchronized StringBuffer append(boolean b)
2.插入字符
前面的字符追加方法总是在字符串的末尾添加内容,倘若需要在字符串中添加内容,就需要使用方法insert(),语法格式如下所示。
public synchronized StringBuffer insert(int offset, String s)
上述语法格式的含义是:将第2个参数的内容添加到第1个参数指定的位置,换句话说,第1个参数表示要插入的起始位置,第2个参数是需要插入的内容,可以是包括String在内的任何数据类型。
3.颠倒字符
字符颠倒方法能够将字符颠倒,例如“我是谁”,颠倒过来就变成“谁是我”,很多时候需要颠倒字符。字符颠倒方法reverse()的语法格式如下所示。
public synchronized StringBuffer reverse( )
实例3-21
使用字符追加函数
源码路径:daima\3\Zhui1.java
实例文件Zhui1.java的主要实现代码如下所示。
public static void main(String args[]){ ① StringBuffer x1 = new StringBuffer("金山 WPS办公"); ② x1.append(",中国人的选择"); ③ System.out.println(x1); ④ StringBuffer x2 = new StringBuffer("WPS"); ⑤ x2.append(2009); ⑥ System.out.println(x2); }
拓展范例及视频二维码
范例3-21-01:替换指定的文本字符
源码路径:演练范例\3-21-01\
范例3-21-02:使用字符颠倒方法reverse()
源码路径:演练范例\3-21-02\
行①定义StringBuffer对象x1,设置x1的初始值是“金山WPS办公”。
行②在x1的后面使用函数append()追加字符串“中国人的选择”。
行③使用println()函数输出x1的值。
行④定义StringBuffer对象x2,设置x2的初始值是“WPS”。
行⑤在x2的后面使用函数append()追加数字“2009”。
行⑥使用println()函数输出x2的值。执行后的结果如图3-23所示。
图3-23 追加字符的结果