字符串
一、String 类
1.声明字符串
在java中字符串必须包含在一对双引号(“”)之内。字符串常量是系统能够显示的任何文字信息,甚至是单个字符。
通过如下方式声明字符串常量:
String str=[null]
String:指定该变量为字符串类型。
str:任意有效的标识符,表示字符串变量的名称。
null:如果省略null,表示str变量是未初始化的状态,否则表示声明的字符串的值等于null。
2.创建字符串
在java中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用构造方法如下:String(char a[])方法。
二、连接字符串
对于以声明的字符串,可以对其进行相应的操作。连接字符串就是字符操作中较简单的一种。可以对多个字符串进行连接,也可使用字符串与其他数据类型进行连接。
1.连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个运算符并产生一个String对象。
2.连接其他数据类型
字符串也可同其他基本数据类型进行连接。如果将字符串同这些数据类型数据进行连接,会将这些数据直接转换成字符串。
三、获取字符串信息
字符串作为对象,可通过相应方法获取字符串的有效信息,如过去某字符串的长度、某个索引位置的字符等。
1.使用String类的length()方法可获取声明的字符串对象的长度。语法如下:
str.length();
2.字符串查找
String类提供了两种查找字符串的方法,即 indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首次出现的位置,lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。
(1)indexOf(substr)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置:如果没有检索到字符串s,该方法的返回值是-1。
语法如下:
str.indexOf(substr)
str:任意字符串对象。
substr:要搜索的字符串。
(2)lastIndexOf(String str)
str:任意字符串对象。
substr:要搜索的字符串。
3.获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回,语法如下:
str.charAt(int index)
str:任意字符串
index:整型值,用于指定要返回字符的下标。
四、字符串操作
1.获取字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串下标从0开始的。
(1)substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取知道该字符串结尾的子串。
(2)substring(int beginIndex,endIndex)
beginIndex:开始截取子字符串的索引位置。
endIndex:子字符串在整个字符串中的结束位置。
2.去除空格
trim()方法返回字符串的副本,忽略签到空格和尾部空格。语法如下:
str.trim()
其中,str为任意字符串对象。
3.字符串替换
replace()方法可实现将指定的字符或字符串替换为新的字符或字符串。语法如下:
str.replace(char oldChar,char newChar)
oldChar:要替换的字符或字符串。
newChar:用于替换原来字符串的内容。
replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串的序列中,则将原字符串返回。
4.判断字符串的开始与结尾
startWith()方法与endsWith()方法分别用于判断字符串是否指定的内容开始或结束。这两个方法的返回值都是boolean类型。
startWith()方法用于判断当前字符串对象的前缀是否是参数指定的字符串。语法如下:
str.startsWith(String suffix)
其中,prefix是指作为前缀的字符。
endsWith(String prefix)用于判断当前字符串是否是以给定的子字符串结束。语法如下:
str.endsWith(String suffix)方法
其中,suffix是指作为后缀的字符。
5.判断字符串是否相等
字符串对象进行比较不能简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用提交运算符仍然会返回false。因此,要比较两个字符串内容是否相等,应用equals()方法和equalsIgnoreCase()方法。
equals()方法:如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。语法如下:
str.equals(String otherstr)
其中,str、otherstr 是参加比较的两个字符串对象。
equalsIgnoreCase()方法:使用equals()方法对字符串进行比较时区分大小写的,而使用equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍为Boolean类型。语法如下:
str.equalsIgnoreCase(String otherstr)
其中,str、otherstr是参加比较的两个字符串对象。
6、按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象位与参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位与参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。语法如下:
str.compareTo(String otherstr)
其中,str、otherstr是参加比较的两个字符串对象。
7.字母大小写转换
字符串的toLowerCase()方法可将字符串中的所有字符从打写字母改写为小写字母,而toUpperCase()方法可将字符串中的小写字母改写为大写字母。
toLowerCase()方法:将String转换为大写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则返回一个新字符串,将原字符串中每个该进行大写转换的字符都转换成等价的大写字符。新字符长度与原字符长度相同。语法如下:
str.toUpperCase()
其中,str是要进行转换的字符串。
8.字符串分割
使用split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。它有两种重载形式。
(1)split(String sign) 该方法可根据给定的分割符对字符串进行拆分。语法如下:
str.split(String sign)
其中,sign为分割字符串的分割符,也可以使用正则表达式。
(2)split(String sign,int limit) 该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。语法如下:
str.split(String sign,int limit)
sign:分割字符串的分割符,也可以使用正则表达式。
limit:限制的分割次数。
五、格式化字符串
String类的静态format()方法用于创建格式化的字符串。format()方法有两种重载形式。
(1)format(String format,Object...args) 该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。语法如下:
str.format(String format,Object...args)
format:格式字符串。
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的书面是可变的,可以为0。
(2)format(Local 1,String format,Object...args)
1:格式化过程中要应用的语言环境。如果1位null,则不进行本地化。
format:格式字符串。
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。
六、字符串生成器
创建成功的字符串对象,期长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。
如果在程序中频繁地附加字符串,建议使用StringBuilder。新创建的StringBuilder对象初始容量是16个字符,可以自行制定初始长度。如果附加的字符超过可容纳的长度,则StringBuilder最后输出字符串结果,可使用toString()方法。利用StringBuilder类中的方法可动态地执行添加、删除和插入等字符串的编辑操作。该类的常用方法如下:
(1)append()方法:该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器等。语法如下:
append(content)
其中,content表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象。
(2)insert(int offset arg)方法:该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、char和boolean等基本数据类型或其他对象。语法如下:
insert(int offset arg)
offset:字符串生成器的位置。该参数必须大于等于0,且小于等于此序列的长度。
arg:将插入至字符串生成器的位置。该参数可以是任何的数据类型或其他对象。
(3)delete(int start,int end)方法:溢出此序列的子字符串中的字符。该子字符串从指定的start处开始,一直到索引end-1处的字符,如果不存在这种字符,则一直到序列尾部。如果start等于end,则不发生任何更改。语法如下:
delete(int start,int end)
start:将要删除的字符串起点位置。
end:将要删除的字符串的重点位置。