String、StringBuffer、StringBuilder—"3S"的常用方法及区别[云图智联]

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类

String、StringBuffer、StringBuilder---&quot;3S&quot;的常用方法及区别[云图智联]

区别

String、StringBuffer、StringBuilder---&quot;3S&quot;的常用方法及区别[云图智联]

String、StringBuffer、StringBuilder---&quot;3S&quot;的常用方法及区别[云图智联]

String、StringBuffer、StringBuilder---&quot;3S&quot;的常用方法及区别[云图智联]

原文 

https://segmentfault.com/a/1190000022992344

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » String、StringBuffer、StringBuilder—"3S"的常用方法及区别[云图智联]

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址