字符串是Java
程序中经常处理的对象,如果字符串运用得不好,将会影响到程序运行的效果。在Java中字符串作为String类的实例来处理。以对象的方式处理字符串,将使字符串更加灵活、方便。了解字符串上可用的操作,可以节省程序编写与维护的时间。
char类型只能表示单个字符,不能表示由多个字符连接而成的字符串。在Java语言中将字符串作为对象来处理,可以通过java.lang包中的String类来创建字符串对象。下面是关于字符串的一些操作。
1、声明字符串:在Java语言中字符串必须包含在一对双引号("
")之内。
例如:"23.23"、"abcd"、"欢迎你们"。这些都是字符串常量,字符串常量是系统能够显示的任何文字信息,甚至是单个字符。
在Java中由双引号("
")号包围的都是字符串,不能作为其他数据类型来使用。如"1+2"的输出结果不可能是3。比如:System.out.println("1+2");其输出结果为1+2,而不是输出3。
声明字符串变量:String
s=null(如果省略null,表示s变量是未初始化状态,否则表示声明的字符串的值等于null)。声明字符串变量必须经过初始化才能使用,否则编译器将会提出“变量未被初始化错误”。
2、创建字符串:在Java中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String的常用构造方法如下:
String(char a[]) :用一个字符数组a创建String对象。
eg:char a[]={'g','o','o','d'};
String s=new String(a); <=======> String
s=new String("good")
String(char a[],int offset,int
lenth):提取字符数组a的一部分来创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度。
eg:char a[]={'s','t','u','d','e','n','t'};
String s=new String(a,2,4); <=======> String
s=new String("uden");
String(char[]
value):该方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。
eg:char a[]={'s','t','u','d','e','n','t'};
String s=new String(a);
<=======> String s=new
String("student");
还可以通过字符串常量的引用赋值给一个字符串变量,引用字符串常量来创建字符串变量。
eg:String str1,str2;
str1="we are students";
str2="we are students";
此时str1和str2引用相同的字符串常量,因为具有相同的实体,但是它们的内存地址不同。
3、连接字符串
连接多个字符串:使用"+"运算符可以实现连接多个字符串的功能。"+"运算符可连接多个运算符并产生一个String对象。
eg:String s1="we are";
String s2="students";
System.out.println(s1+s2);
运行结果为:we are students
连接其他类型数据:字符串也可同其他基本数据类型进行连接。如果将字符串同这些数据类型数据进行连接,会将这些数据直接转换成字符串。
eg:int
booktime=4;
System.out.println("我每天花费"+booktime+"小时看书!");
运行结果为:我每天花费4小时看书!
4、获取字符串信息
获取字符串长度:使用String()类的length()方法可获取声明字符串对象的长度。
语法如下:
str.length();其中str表示字符串对象。
注意:length()方法返回字符串的长度包括字符串中的空格。
字符串查找:String类提供了两种查找字符串的方法。即indexOf()和lastindexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。
indexOf(String
s):该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当调用字符串的该方法时,会从当前字符串的开始位置搜索s的位置。如果没有检索到字符串s,该方法返回-1。
语法如下:
str.indexOf(substr);其中str表示任意字符串对象,substr表示要搜索的字符串
eg:String str="we
are students";
String
substr="a";
int
size=str.indexOf(substr);
System.out.println("a的索引位置是"+size);
运行结果为:a的索引位置是3
注意:理解字符串的索引位置,要对字符串的下标有所了解。在计算机中String对象是用数组表示的。字符串的下标是0~length()-1。因此字符串的第一个下标为0,而不是1。
lastIndexOf(String
s):该方法用于返回参数字符串在指定字符串中最后一次出现的索引位置。当调用字符串的该方法时,会从当前字符串的开始位置搜索s的位置。如果没有检索到字符串s,该方法返回-1。
语法如下:
str.lastIndexOf(substr);其中str表示任意字符串对象,substr表示要搜索的字符串
在此就不在举例了。方法与indexOf()基本相同。
注意:如果lastIndexOf()方法中的参数是空字符串""(注意没有空格),则返回结果与调用该字符串length()方法的返回结果相同。
获取指定索引位置的字符:使用charAt()方法可将指定索引出的字符返回。
语法如下:
str.charAt(int
index);其中str表示任意字符串,index用于指定返回字符的下标。
eg:String s="we
are students";
char
a=s.charAt(3);
System.out.println("索引下标为3的位置的字符:"+a);
运行结果为:索引下标为3的位置的字符:a
5、字符串操作
获取字符串:通过String类的substring()方法可对字符串进行截取。这些方法的共同点都是利用字符串的下标进行截取,且应明确字符串下标是从0开始的。
substring(int
beginIndex):该方法返回的是从指定的索引位置开始截取知道该字符串结尾的子串。
语法如下:
str.substring(int
beginIndex);其中beginIndex指定从某一索引出开始截取字符串。
eg:String str="we are students";
String substr=str.substring(3);
System.out.println(substr);
运行结果为:are students
注意:在字符串中空格占用一个索引位置
substring(int beginIndex,int
endIndex):该方法返回的是从字符串某一索引位置开始截取某一索引位置结束的子串。=====>[beginIndex,endIndex)
语法如下:
str.substring(int
beginIndex,int
endIndex);其中beginIndex表示开始截取字符串的索引位置,endIndex表示子字符串在整个字符串中的结束位置。
eg:String s="we
are students";
String
substr=s.substring(3,10);
System.out.println(substr);
运行结果为:are
stu
去除空格:trim()方法返回字符串的副本,忽略前导空格和尾部空格。
语法如下:
str.trim();其中str为任意字符串对象
eg:String str="
we are students ";
string
str1=str.trim();
System.out.println("字符串str的长度为"+str.length());
System.out.println("字符串str1的长度为"+str1.length());
运行结果为:字符串str的长度为17
字符串str1的长度为15
注意:trim()方法只能去除字符串的前导空格和尾部空格,不能去除字符串内部的空格
字符串替换:replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。
语法如下:
str.replace(char
oldChar,char
newChar);其中oldChar表示要替换的字符或字符串,newChar表示用于替换原来字符串的内容
eg:String str="we
are sudents";
String
newstr=str.replace("w","W");
System.out.println(newstr);
运行结果为:We are
students
注意:如果oldChar内有出现在该对象表达式中的字符串序列中,则将原字符串返回。并且oldChar在字符串中出现多次,replace()方法将所有oldChar全部替换成newChar。
判断字符串的开始与结尾:startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为
boolean类型。
startsWith():用于判断当前字符串对象的前缀是否是桉树指定的字符串
语法如下:
str.startsWith(String prefix);其中prefix是指作为前缀的字符串。
eg:String s="we
are students";
boolean
a=s.startsWith("we");
boolean
b=s.startsWith("wef");
System.out.println("字符串s是否以we开头?"+a);
System.out.println("字符串s是否以wef开头?"+a);
运行结果为:字符串s是否以we开头?true
字符串s是否以wef开头?false
endsWith():用于判断当前字符串是否时以指定的子字符串结束
语法如下:
str.endsWith(String suffix);其中suffix是指作为后缀的字符串
eg:String
s="we are students";
boolean
a=s.endsWith("s");
boolean
b=s.endsWith("f");
System.out.println("字符串s是否以s结束?"+a);
System.out.println("字符串s是否以f结束?"+a);
运行结果为:字符串s是否以s结束?true
字符串s是否以f结束?false
判断字符串是否相等 :比较两个字符串是否相等,则使用equals()方法和equalsIgnoreCase()方法
equals():如果两个字符串具有相同的字符和长度,则使用equals方法进行比较时,返回true。
语法如下:
str.equals(String
otherstr):其中str、otherstr是参加比较的两个字符串对象
eg:String
s1="abc";
String
s2="abc";
System.out.println("s1==s2?"+(s1==s2));
System.out.println("s1 equals
s2?"+s1.equals(s2));
运行结果为:s1==s2?false
s1.equals(s2)?true
注意:==比较运算符比较的是两个字符串的地址是否相等。即使两个字符串的内容相同,两个对象的聂村地址也是不同的,使用比较运算符仍然会返回false。
equalsIgnoreCase():忽略了大小写的情况下比较两个字符串是否相等,返回结果仍为boolean类型
语法如下:
str.equalsIgnoreCase(String
otherstr);其中str、otherstr是参加比较的两个字符串对象
eg:String s1="abc";
String
s2="ABC";
System.out.println("s1 equals s2?"+s1.equals(s2));
System.out.println("s1.equalsIgnoreCase(s2)?"+s1.equalsIgnoreCase(s2));
运行结果为:s1 equals
s2?false
s1.equalsIgnoreCase(s2)?true
注意:equals比较时区分大小写,euqalsIgnoreCase比较时不区分大小写
按字典顺序比较两个字符串:compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String
对象位于参数字符串之前,则比较结果返回一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较返回一个正整数;如果两个字符串相等,则结果为0。
语法如下:
str.compareTo(String otherstr);其中str、otherstr是参加比较的两个字符串对象
eg:String s1="b";
String
s2="a";
String
s3="c";
System.out.println(s1+" compare to
"+s2+":"+s1.compareTo(s2));
System.out.println(s1+" compare to
"+s3+":"+s1.compareTo(s3));
运行结果为:b compare
to a:1
b compare to
c:-1
注意:compareTo()方法只有在equals(Object)方法返回true时才返回0
字母大小写转换:字符串中通过toLowerCas()方法可将字符串中所有字符从大写字母转换为小写字母
字符串中通过toUpperCase()方法可将字符串中所有字符从小写字母转换为大写字母
toLowerCase():可将String
转换为小写。如果字符串中没有应该被转换的字符,则将原字符返回;否则将返回一个新的字符串,将原字符串中每个该进行小写转换的字符都替换等价的小写字符。字符的长度与原字符串的长度相同。
语法如下:
str.toLowerCase();其中str表示要进行转换的字符串
eg:String
s1="AbcdEFgHigk";
String
newstr=s1.toLowerCase();
System.out.println("通过toLowerCase()转换的新字符串为:"+newstr);
运行结果为:通过toLowerCase()转换的新字符串为:abcdefghigk
toUpperCase():可将String转换为大写。如果字符串中没有应该被转换的字符,则将原字符返回;否则则将返回一个新的字符串,将原字符串中每个应该进行大写转换的字符都替换等价的大写字符。字符的长度与原字符的长度相同。
语法如下:
str.toUpperCase():其中str表示要进行转换的字符串
eg:String
s1="AbcdEFgHigk";
String
newstr=s1.toUpperCase();
System.out.println("通过toUpperCase()转换的新字符串为:"+newstr);
运行结果为:通过toUpperCase()转换的新字符串为:ABCDEFGHIGK
字符串分割:split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。split方法提供以下两种重载方法。
split(String
sign):可根据给定的分割符对字符串进行拆分
语法如下:
str.split(String
sign);其中sign为分割字符串的分割符,也可以使用正则表达式
eg:String
s1="AbcdEFgHigk";
String[]
newstr=s1.split("c");
for(int
i=0;i
System.out.print(newstr[i]+"\t");
}
运行结果为:Ab
dEFgHigk
注意:没有统一的对字符串进行分割的符号。如果想定义多个分割符,可使用符号“|”。例如:“,|=”,表示分割符分别为“,”,“=”。
split(String sign,int
limit):可根据给定的分割符对字符串进行纷分割,并限定拆分的次数
语法如下:
str.split(String
sign,int limit);其中sign与上一个重载方法一样;limit表示限制分割次。
eg:String
s1="AbcdEFdHigk";
String[]
newstr=s1.split("d",2);
for(int
i=0;i
System.out.print(newstr[i]+"\t");
}
运行结果为:Abc
EFdHigk
注意:如果将limit的传入参数改为3,运行结果为:Abc EF Higk
以上是关于String类的基础内容及String的相关用法。