Java——String、StringBuilder、StringBuffer的区别与常用方法

    xiaoxiao2021-12-10  7

    常用方法

    String

    1、获取字符串长度: string.length()

    2、字符串转换为char型数组: string.toCharArray()

    3、从字符串中取出指定位置(num+1)的字符(下标从0开始):string.charAt(num)

    4、字符串与byte数组的转换:string.getBytes()

    5、过滤字符串中存在的字符(查找string字符串中str字符所在的第一个位置,返回位置下标数字):string.indexOf(str)

    6、去掉字符串的前后空格: string.trim()

    7、从字符串中取出子字符串:subString()

    7-1 从字符串string中取出第num+1位及其之后的子字符串:string.subString(num);
    7-2 从字符串中取出num1+1至num2之间的子字符串: string.subString(num1,num2);

    8、字符串的大小写转换:

    8-1 小写转大写:string.toUpperCase();
    8-2 大写转小写:string.toLowerCase();

    9、判断字符串的开头、结尾的字符(ch,并且返回一个boolean类型结果):

    9-1 判断开头字符:string.startWith(ch);
    9-2 判断结尾字符:string.endsWith(ch);

    10、把string字符串中的所有子字符串oldstr替换为newstr: string.replace(oldstr,newstr);

    11、向string字符串后插入新的字符串str: string=string+str;

    StringBuffer/StringBuilder

    【Stringbuffer/StringBuilder都是AbstractStringBuilder的子类,所以用法都一样。】

    1 向字符串(stringBuffer)后插入新的字符串(sbf):stringBuffer.append(sbf); //无返回值

    2、向字符串(stringBuffer)中下标为num处的位置后插入新的字符串(sbf): stringBuffer.insert(num,sbf);

    3、把字符串(stringBuffer)中num1+1到num2之间的字符替换成字符串sbf:stringBuffer.replace(num1,num2,sbf);

    4、过滤字符串(stringBuffer)中存在的字符(查找stringBuffer字符串中sbf字符所在的第一个位置,返回位置下标数字):stringBuffer.indexOf(sbf);

    区别

    String:不可变字符序列 StringBuilder:可变字符序列,线程不安全,效率高,用的最多 StringBuffer:可变字符序列,线程安全,效率低 注:当字符串需要不断被更改的时候,最好使用Stringbuffer/StringBuilder,这样可以节省内存空间。 当字符串被单个线程使用的时候,最好使用stringBuilder。当字符串呗多个线程使用的时候最好使用StringBuffer

    内存机制:String类中的value字符数组用了final修饰,而Stringbuffer/StringBuilder没有。

    public class TestString { public static void main(String[] args) { String str = new String("a"); for(int i = 0; i < 10; i++){ str += i; } System.out.println(str); } }

    这样创建了12个字符串类,很浪费空间。

    public class TestStringBuilder { public static void main(String[] args) { StringBuilder str = new StringBuilder("a"); for(int i = 0; i < 10; i++){ str.append(i); //追加 } System.out.println(str); } }

    这样,只创建了二个类。。

    参考:http://m.blog.csdn.net/article/details?id=52433046

    转载请注明原文地址: https://ju.6miu.com/read-700205.html

    最新回复(0)