String类
单个字符串可以用来char类型保存,多个字符组成的文本就需要保存在String对象中。String通常被称为字符串,一个String对象最多可以保存(-1)个字节(占用4GB空间大小)的文本内容。
声明字符串
在Java语言中,字符串必须包含在一对双引号(" ")之内。例如:
"23.23"、"ABCDE"、"您好"
可以通过以下语法格式来声明字符串变量:
String str;
String:指定该变量为字符串类型
str:任意有效的标识符,表示字符串变量的名称
创建字符串
在Java3语言中,将字符串作为对象来处理,因此可以像创建其他类型对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用构造方法如下:
1、String(char a[])
该方法用一个字符数组a创建对象。
2、String(char a[],int offset,int length)
该方法提取字符数组a中的一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度。
3、Strring(char[] value)
该构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。
连接字符串
连接多个字符串
使用”+“运算符可实现连接多个字符串的功能。”+“运算符可以连接多个String对象并产生一个新的String对象。
先连接一副对联的上、下联,再分行输出在控制台上。代码如下:
public class Test1{//创建类
public static void main(String args[]) {//主方法
String s1=new String("春色绿千里");//声明String对象s1
String s2=new String("马蹄香万家");//声明String对象s2
String s=s1+"\n"+s2;//将对象s1、"\n"和对象s2连接并将结果赋值给s
System.out.println(s);//将s输出
}
}
运算结果:
连接其他数据类型
字符串也可以同其他基本类型进行连接。如果将字符串同其他数据类型数据进行连接,会将其他数据类型的数据直接转换成字符串。
统计每天的阅读和上级时间。代码如下:
public class Test1{
public static void main(String args[]) {
int booktime=4;
float practice=2.5f;
//将字符串与整型、浮点型变量相连接,并将结果输出
System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");
}
}
运行结果:
获取字符串信息
获取字符串长度
使用String类的length()方法可获取声明的字符串对象的长度。语法如下:
str.length();
字符串查找
String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首次出现的位置。
1、indexOf(String s)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当调用String类的indexOf()方法时,会从当前字符串的开始位置搜索s的位置。
//查找字符串里第一次出现该元素的位置str.indexOf("1")
int indexof=str.indexOf("1");
System.out.println(indexof);
2、lastIndexOf(String str)
该方法用于返回指定字符串最后一次出现的索引位置。当调用String类的lastIndexOf()方法时,或从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。
//查找字符串里最后一次出现该元素的位置str.lastIndexOf
int lastIndexOf=str.lastIndexOf("1");
System.out.println(lastIndexOf);
用两种方式判断字符串的长度。代码如下:
public class Test1{
public static void main(String args[]) {
String str="We are students";//定义字符串str
int size=str.lastIndexOf("");//将空字符串在str中的索引位置赋值给变量size
System.out.println("空字符串在字符串str中的索引位置是:"+size);//将变量size输出
System.out.println("字符串str的长度是:"+str.length());//将字符串str的长度输出
}
}
运行结果:
获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。
//获取指定索引号的字符
char charAt=str.charAt(3);
System.out.println(charAt);
查看指定索引位置上的字符。代码如下:
public class Test1{
public static void main(String args[]) {
String str="hello world";//定义字符串str
char mychar=str.charAt(6);//将字符串str中索引位置是6的字符返回
System.out.println("字符串str中索引位置是6的字符为:"+mychar);//输出信息
}
}
运行结果:
字符串操作
获取子字符串
1、substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。语法如上:
2、substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。语法如上:
《将进酒》的作者是哪位诗人?代码如下:
public class Test1{
public static void main(String args[]) {
String str="《将进酒》:李白(唐)";//定义的字符串
String substr=str.substring(6,8);//对字符串进行截取
System.out.println("《将进酒》的作者是"+substr);//输出截取后的字符串
}
}
运行结果:
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格,语法如下:
str.trim()
去掉字符串首、尾的空格。代码如下:
public class Test1{
public static void main(String args[]) {
String str=" Java class ";//定义字符串str
System.out.println("字符串原来的长度:"+str.length());//将str原来的长度输出
//将str去掉前导和尾部的空格后的长度输出
System.out.println("去掉空格后的长度:"+str.trim().length());
}
}
运行结果:
字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串,语法如下:
str.replace(CharSequence target,CharSequence replacement)
target:要替换的字符或字符串
replacement:用于替换原来字符串的内容
将单词中的字母a替换为字母A,代码如下:
public class Test1{
public static void main(String args[]) {
String str="address";//定义字符串str
String newstr=str.replace("a","A");//将str中“a”替换成"A"并返回新字符串newstr
System.out.println(newstr);//将字符串newstr输出
}
}
运行结果:
判断字符串的开始与结尾
1、startsWith()方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法如下:
str.startsWith(String prefix)
prefix:作为前缀的字符串
2、endsWith()方法
该方法用于判断当前字符串是否为以给定的字符串结束。语法如下:
str.endsWith(String suffix)
suffix:作为后缀的字符串
判断字符串是否以指定的内容开始或结束。代码如下:
public class Test1{
public static void main(String args[]) {
String num1="22045612";//定义字符串num1
String num2="21304578";//定义字符串num2
boolean b=num1.startsWith("22");//判断字符串num1是否以‘22’开头
boolean b1=num2.endsWith("78");//判断字符串num1是否以‘78’结束
System.out.println("字符串num1是以‘22’开始的吗?"+b);
System.out.println("字符串num2以‘78’结束的吗?"+b1);//输出信息
}
}
运行结果:
判断字符串是否相等
对字符对象进行不能简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回。
要比较两个字符串内容是相同相等,应使用equals()方法和equalsIgnoreCase()方法 。
1、equals()方法
如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。否则false。语法如下:
str.equlas(String otherstr)
2、equalsIgnoreCase()方法
使用equlas()方法对字符串进行比较时是区分大小写的,而使用equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍然为boolean类型。语法如下:
str.equalsIgnoreCase(String otherstr)
判断”abc“与”ABC“是否相等,代码如下:
public class Test1{
public static void main(String args[]) {
String s1=new String("abc");//创建字符串对象s1
String s2=new String("ABC");//创建字符串对象s2
boolean b=s1.equals(s2);//使用equals()方法比较s1与s2
boolean b1=s1.equalsIgnoreCase(s2);//使用equalsIgnoreCase()方法比较s1与s2
System.out.println(s1+"equals"+s2+":"+b);
System.out.println(s1+"equalsIgnoreCase"+s2+":"+b1);
}
}
运行结果:
按照字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符串的Unicode值,按照字典顺序将String对象表示的字符序列与参数字符串所表示的字符序列进行比较。语法如下&#x