共计 5432 个字符,预计需要花费 14 分钟才能阅读完成。
String 类介绍
String 是一个引用数据类型默认为 null;
String 为 final 类型不可更改, 不能被继承;
基本类型与 String 结合都会转换为 String 类型;
一、String 常用方法
-
length()方法
1、使用 String 类的 length()方法可获得声明的字符串对象的长度。
// 空格也被视为字符参与长度计算
String str = "We are students";
int size = srt.length();// 此时 size 的值为 15;
length()方法也可以用于数组输出时控制 for 循环
// 空格也被视为字符参与长度计算
int [] a = {1,2,3,4,5};
for(int i = 0; i<a.length; i++)
{System.out.print(a[i]);// 输出结果为:12345
}
indexOf()方法与 lastIndexOf()方法
1、indexOf()方法
indexOf(String s)
该方法用于返回参数字符 s 在指定字符串中首次出现的索引位置。当调用字符串的 indexOf()方法时,会从当前字符串开始位置搜索 s 的位置;若果未检索到该字符字符串 s,该方法的返回值为 -1.
// 索引是从 0 到 length()-1。String str = "We are students";
int size = str.indexOf("a");//size 的值为 3
2、lastIndexOf()方法
该方法与 indexOf()方法用法相同,但查询的方向不同,lastIndexOf()方法是从最后一次出现的索引位置开始查找。
注意:
lastIndexOf()方法中参数是空字符串“”,空格除外,则返回的结果与调用 length()方法返回结果相同。
charAt()方法
该方法可将指定索引处的字符返回。
String str = "We are students";
char mychar = str.charAt(5);//mychar 变量的值为字符 r。
substring()方法
1、substring()方法第一种用法
该方法返回的是从指定的索引处开始截取直到该字符串的结尾处。
//substring(int beginIndex)
String str = "We are students";
String substr = str.substring(5);// 此时 substr 值为 e students
2、substring()方法第二种用法
该方法返回的是从某一个索引处开始截取至某一个索引处结束。
//substring(int beginIndex , int endIndex)
String str = "We are students";
String substr = str.substring(5,12);// 此时 substr 值为 e stude
trim()方法
该方法返回字符串的副本,忽略前导空格和尾部空格。
String str = "Students";
String substr = str.trim();// 此时 substr 的值为 Students
replace()方法和 replaceAll()方法
1、replace()
该方法将指定的字符或字符串替换成指新的字符或字符串。
//replace(char newChar , char oldChar);
String str = "java project";
String substr = str.replace("j" , "J");// 此时 substr 的值为 Java proJect
//oldChar 在字符串中多次重复出现,该方法会将全部的 oldChar 替换成 newChar
注意:
要替换的字符 oldChar 的大小写要与元字符中的大小写保持一致,否则会不能成功的替换。
String str = "java project";
String substr = str.replace("P" , "t");// 此时就会替换失败
2、replaceAll()用法及 replaceAll()与 replace()的区别
一、参数不同
replace 的参 bai 数是 char 和 CharSequence,既可以支持字 du 符的替换,也 zhi 支持字符串的替换。
replaceAll 的参数是 regex,即基于规则表达式的替换,比如,可以通过 replaceAll(“d”,“*”) 把一个字符串所有的数字字符都换成星号。
二、替换结果不同
replace 只替换第一个出现的字符(受 javascript 的影响),replaceAll 替换所有的字符,简而言之,replace 用新串序列替换旧串序列,而 replaceAll 是用新串替换与前面正则表达式相匹配的位置的字符串。
三、用法不同
replaceAll 支持正则表达式,replace 不支持。
String s = "e ccccc l";
System.out.println(s.replaceAll("|c", ""));// 输出结果为 el
System.out.println(s.replaceAll("",""));// 输出结果为 ecccccl
System.out.println(s.replace("",""));// 输出结果为 ecccccl
System.out.println(s.replace("|c", ""));// 输出结果为 e ccccc l
System.out.println(+s.replaceAll("+|c", ""));// 输出结果为 el
System.out.println(+ s.replace("+", ""));// 输出结果为 e ccccc l
startsWith()方法与 endsWith()方法
1、startsWith()
该方法用于判定当前字符串对象的前缀是否为参数指定的字符串。
2、endsWith()
该方法用于判定当前字符串对象的后缀是否为参数指定的字符串。
String num1 = "22045612";
String num2 = "21304578";
boolean b = num1.startsWith("22");// b 的值为 true
boolean b1 = num2.endsWith("78");//b1 的值为 true
boolean b2 = num1.startsWith("30");//b2 的值为 false
boolean b3 = num2.endsWith("45");//b3 的值为 false
equals()方法
1、equals()
如果两个字符串具有相同的字符和长度,则用该方法进行比较是返回 true
2、equalslgnoreCase()
该方法与 equlas()方法用法相同,但 equlas()方法区分大小写,而 equalslgnoreCase()忽略大小写。
String s1 = "abc;
String s2 = "abc";
String s3 = "ABC"
boolean b = s1.equlas(s2);// b 的值为 true
boolean b1 = s1.equalslgnoreCase(s3)//b1 的值为 true
boolean b2 = s1.equlas(s1);//b2 的值为 false
boolean b3 = s1.equalslgnoreCase(s2)//b1 的值为 true
注意:在比较除 String 类的字符或数字是不能用 equals()方法,不是 String 类的是 equals()会比较他们的地址。
compareTo()方法
compareTo()的返回值是整型, 它是先比较对应字符的大小(ASCII 码顺序), 如果第一个字符和参数的第一个字符不等, 结束比较, 返回他们之间的差值, 如果第一个字符和参数的第一个字符相等, 则以第二个字符和参数的第二个字符做比较, 以此类推, 直至比较的字符或被比较的字符有一方全比较完, 这时就比较字符的长度.
String s1 = "abc";
String s2 = "abcd";
String s3 = "abcdfg";
String s4 = "1bcdfg";
String s5 = "cdfg";
System.out.println(s1.compareTo(s2) ); // -1 (前面相等,s1 长度小 1)
System.out.println(s1.compareTo(s3) ); // -3 (前面相等,s1 长度小 3)
System.out.println(s1.compareTo(s4) ); // 48 ("a" 的 ASCII 码是 97,"1" 的的 ASCII 码是 49, 所以返回 48)
System.out.println(s1.compareTo(s5) ); // -2 ("a" 的 ASCII 码是 97,"c" 的 ASCII 码是 99, 所以返回 -2)
注意
compareTo() 方法只有在 equals(Object)方法返回 true 是才返回 0.
toLowerCase()方法与 toUpperCase()方法
1、toLowerCase()
将 String 转换为小写。如果没有用该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原来的字符串中每个改进行小写转换的字符都转换成等价的小写字符。字符长度不变。
2、toUpperCase()
将 String 转换为大写。如果没有用该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原来的字符串中每个改进行大写转换的字符都转换成等价的大写字符。字符长度不变。
String str = "abc ABC";
String newstr1 = str.toLowerCase();//newstr1 的值为 abc abc
String newstr2 = str.toUpperCase();//newstr2 的值为 ABC ABC
split()方法
1、第一种用法
该方法可根据给定的分割符对字符串进行分割
2、第二种用法
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数
String str ="192.18.0.1";
// 按照 "." 进行分割
String[] firstArray = str.split("\\.");//firstArray 字符数组的值为:{192,168,0,1}
// 按照 "." 进行两次分割
String[] secondArray = str.split("\\.", 2);//secondArray 字符数组的值为:{192,168.0.1}
contains()方法
字符串中包含相等的字符或字符串时,如果包含返回 true,如果不包含返回 false。
public static void main(String[] args) {
String str1 = "hello,world!", str2 = "what?";
CharSequence a = "llo";
boolean b = str1.contains(a);
System.out.println("第一条返回结果是 :" + b); // 返回结果为 true
b= str2.contains("!");
System.out.println("第二条返回结果是:" + b); // 返回结果为 false
}
StringBuffer 类
与 String 类不同的是,StringBuffer 类的对象能够被多次的修改,并且不产生新的未使用对象,还保障了线程安全。
//StringBuffer 只能用 new 的方法创建新的对象
StringBuffer sbf = new StringBuffer();// 无初始值
StringBuffer sbf = new StringBuffer(""abc);// 初始值为"abc"
StringBuffer sbf = new StringBuffer(32);// 初始容量为 32 个字符
二、StringBuffer 的常用方法
-
append()方法
改方法用于字符转生成器的内容追加。通过该方法的多个重载形式,可以实现接受任何类型的数据,如 int、boolean、char、String、double 或者另一个字符串生成器。
//insert(int offset,age)
StringBuffer sbf = new StringBuffer("hello");
sbf.append("world");// 此时 sbf 的内容为:hello world
insert()方法
该方法用于向字符串生成器中的指定位置插入数据。通过该方法的多个重载形式,可以实现向字符串生成器中插入 int、boolean、char、float、double 等基本数据类型或其他对象。
//insert(int offset,age)
StringBuffer sbf = new StringBuffer("hello");
sbf.insert(5,"world");// 此时 sbf 的内容为:hello world
delete()方法
移除此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end- 1 处的字符,如果不存在这种字符,则一直到序列尾部。如果 start 与 end 相等,则不发生任何更改。
//delete(int start,int end)
StringBuffer sbf = new StringBuffer("StringBuffer");
sbf.selete(5,10);// 此时 sbf 的内容为:Strinr
reverse()方法
该方法可以将字符串反序输出。
StringBuffer sbf = new StringBuffer("StringBuffer");
sbf.reverse();// 此时 sbf 的内容为:reffuBgnirtS
StringBuilder 类
区别