对于已声明的字符串,可以进行相应的操作,可以对多个字符串进行连接,也可使字符串与其他数据类型进行连接。
使用“+”运算符可以实现连接多个字符串的功能。
//字符串连接
public class Main {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = new String("world");
String s = s1 + " " + s2;
System.out.println(s);
}
}
使用String类的length()方法可获取声明的字符串对象的长度
语法如下:
str.length()
//获取字符串长度
public class Length{
public static void main (String args[]){
String str = new String("hello world");
int size = str.length();
System.out.println(size);
}
}
1.indexOf(String s)
该方法返回参数字符串s在指定字符串中首次出现的索引位置。
如果没有检索到字符串s,该方法返回值是-1。
语法如下:
str.indexOf(substr)
//字符串查找
public class SearchA {
public static void main (String args[]){
String str = "hello world";
int sizee = str.indexOf("e");
int sizea = str.indexOf("a");
System.out.println("sizee:"+sizee+" "+"sizea:"+sizea);
}
}
运行结果:
2.lastIndexOf(String str)
该方法用于返回指定字符串最后一次出现的索引位置。
如果没有检索到字符串str,该方法返回-1。
语法如下:
str.lastIndexOf(substr)
//字符串查找
public class SearchA {
public static void main (String args[]){
String str = "hello world";
int sizel = str.lastIndexOf("l");
int sizea = str.lastIndexOf("a");
System.out.println("sizel:"+sizel+" "+"sizea:"+sizea);
}
}
使用charAt()方法可将指定索引处的字符返回。
语法如下:
str.chatAt(int index)
//获取指定索引位置的字符
public class Ref {
public static void main(String args[]){
String str = "hello world";
char mychar = str.charAt(6);
System.out.println(mychar);
}
}
通过String类的substring()方法可对字符串进行截取。
1.substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
语法如下:
str.substring(int beginIndex)
//获取子字符串
public class Subs {
public static void main(String args[]){
String str = "hello world";
String substr = str.substring(3);
System.out.println(substr);
}
}
运行结果:
2.substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。
语法如下:
substring(int beginIndex,int endIndex)
//获取子字符串
public class Subs {
public static void main(String args[]){
String str = "hello world";
String substr = str.substring(0,3);
System.out.println(substr);
}
}
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
语法如下:
str.trim()
//去除空格
public class Blak {
public static void main(String args[]){
String str = " hello world ";
System.out.println("字符串原来的长度:"+str.length());
String strim = str.trim();
System.out.println("去除空格的字符串:"+strim);
System.out.println("去除空格的字符串长度:"+strim.length());
}
}
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。
语法如下:
str.replace(char oldChar,char newChar)
replace()方法返回的结果是一个新的字符串。
如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。
//字符串替换
public class NewStr {
public static void main(String args[]){
String str = "address";
String newstr = str.replace("a","A");
System.out.println(newstr);
}
}
startsWith()方法与endsWirh()方法分别用于判断字符串是否以指定的内容开始或结束。
这两个方法的返回值均为boolean类型。
1.startsWith()
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。
语法如下:
str.startsWith(String prefix)
2.endsWith()
该方法用于判断当前字符串是否以给定的子字符串结束。
语法如下:
str.endsWith(String suffix)
//判断字符串的开始与结尾
public class StartOrEnd {
public static void main(String args[]){
String str1 = "aabbccdd";
String str2 = "bbaaddcc";
boolean b1 = str1.startsWith("aa");
boolean b2 = str1.endsWith("cc");
boolean b3 = str2.startsWith("aa");
boolean b4 = str2.endsWith("cc");
System.out.println("字符串str1是以'aa'开始的吗?"+b1);
System.out.println("字符串srt1是以'cc'结束的吗?"+b2);
System.out.println("字符串str2是以'aa'开始的吗?"+b3);
System.out.println("字符串str2是以'cc'结束的吗?"+b4);
}
}
不能使用比较运算符”==“,因为比较运算符比较的是两个字符串的地址是否相同,即使两个字符串的内容相同,两个对象的内存的地址也是不同的,使用比较运算符仍然会返回false。
因此,要比较两个字符串内容是否相等,应使用equals()方法和equalsIgnoreCase()方法。
1.equals()
如果两个字符串具有相同的字符和长度,则使用equals()方法比较时,返回true。
语法如下:
str.equals(String otherstr)
2.equalsIgnoreCase()
使用equals()方法对字符串进行比较时是区分大小写的,而使用equalsIngoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果类型仍为boolean类型。
语法如下:
str.equalsIgnoreCase(String otherstr)
//判断字符串是否相等
public class Opinion {
public static void main(String args[]){
String s1 = new String("abc");
String s2 = new String("ABC");
boolean b1 = s1.equals(s2);
boolean b2 = s1.equalsIgnoreCase(s2);
System.out.println(s1+"equals"+s2+":"+b1);
System.out.println(s1+"equalsIngoreCase"+s2+":"+b2);
}
}
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。
如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;
如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;
如果这两个字符串相等,则结果为0。
语法如下:
str.compareTo(String otherstr)
//按字典顺序比较两个字符串
public class Wordbook {
public static void main(String args[]){
String str1 = new String("b");
String str2 = new String("a");
String str3 = new String("c");
System.out.println(str1+"compareTo"+str2+":"+str1.compareTo(str2));
System.out.println(str1+"compareTo"+str3+":"+str1.compareTo(str3));
}
}
1.toLowerCase()
该方法将String转换为小写。
如果没有应该被转换的字符,则将原字符串返回。
语法如下:
str.toLowerCase()
2.toUpperCase()
语法如下:
str.toUpperCase()
//字母大小写转换
public class UpAndLower {
public static void main(String args[]){
String str = new String("abc DEF");
String newstr1 = str.toLowerCase();
String newstr2 = str.toUpperCase();
System.out.println(newstr1);
System.out.println(newstr2);
}
}
使用split()方法可以对字符串按指定的分割字符或字符串对内容进行分割。
分割后的结果存放在字符串数组中。
1.split(String sign)
语法如下:
str.split(String sign)
2.split(String sign,int limit)
该方法可以根据给定的分割字符对字符串进行拆分,并限定分割次数。
语法如下:
str.split(String sign,int limit)
import java.util.Arrays;
//分割字符串
public class Division {
public static void main(String args[]){
String str = "192.168.0.1";
//按照“.”进行分割,使用转义字符“\\.”
String[] firstArray = str.split("\\.");
String[] secondArray = str.split("\\.",2);
System.out.println("["+str+"]");
System.out.print("全部分割的结果:");
/*for (String a : firstArray){
System.out.print("["+a+"]");
}
System.out.println();//换行
System.out.print("分割两次的结果:");
for (String a : secondArray){
System.out.print("["+a+"]");
}
System.out.println();//换行*/
System.out.println(Arrays.toString(firstArray));
System.out.print("分割两次的结果:");
System.out.println(Arrays.toString(secondArray));
}
}
创建成功的字符串对象池,其长度是固定的,内容不能被改变和编译。
如果在程序中频繁地附加字符串,建议使用可变的字符序列String-Builder类。
若要使用StringBuilder最后输出字符串结果,可使用toString()方法。
利用StringBuilder类中的方法可以对字符串进行动态的添加、删除、插入等操作。
1.append()
该方法用于向字符串生成器中追加内容,可接受任何类型的数据。
语法如下:
append(content)
2.insert(int offset,arg)
该方法用于向字符生成器中的指定位置插入数据内容,可接受任何类型的数据。
语法如下:
insert(int offset,arg)
3.delete(int start,int end)
移除此序列的字符串中的字符。
该字符串从指定的start处开始,一直到索引end-1处的字符,如果不存在这种字符,则一直到序列尾部。
如果,start等于end,则不发生任何更改。
语法如下:
delete(int start,int end)
//StringBuilder操作
public class StrB {
public static void main(String args[]){
StringBuilder sb1 = new StringBuilder("hello");
StringBuilder sb2 = new StringBuilder("ho");
StringBuilder sb3 = new StringBuilder("heeeello");
for (int i=0;i<5;i++){
sb1.append(i);
}
System.out.println(sb1);
sb2.insert(1,"ell");
System.out.println(sb2);
sb3.delete(2,5);
System.out.println(sb3);
}
}