Java八大常用类(四) StringBuffer和StringBuilder类

StringBuffer和StringBuilder 非常类似,均代表可变的字符序列。这两个类都是抽象类的,方法一模一样

StringBuffer线程安全,做线程同步检查,效率低

StringBuilder线程不安全,不做线程同步检查,效率较高,建议使用该类

StringBuilder的使用
速度对比:

package oop2.demo06;

public class StringF {

public static void main(String[] args) {
    String str = "bnu";
    StringBuilder builder = new StringBuilder();
    long l = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
        //str = str.concat("sxt");
        //builder.append("sxt");
    }

    long l1 = System.currentTimeMillis();
    System.out.println(l1-l);     //查看运行的时间,用以对比StringBuilder 和String运行的速度
}

}
一些常用方法:
package oop2.demo06;

public class StringG {

public static void main(String[] args) {

    //String s = "bnu";
    StringBuilder builder = new StringBuilder("bnu");
    builder.append("北京师范大学");     //内容追加的方法 ,常用。
    builder.insert(0,"BNU");   //指定的位置插入字符串。数组下标从0开始
    char c = builder.charAt(2);   //取出指定下标字符
    builder.setCharAt(3,'J');    //设置指定位置的的字符
    builder.replace(0,4,"北师大");    //进行指定位置的字符替换  [0,4)
    builder.deleteCharAt(3);  //删除指定位置字符
    builder.delete(1,3);   //删除多个字符 [1, 3)
    builder.reverse();   //倒序输出字符串

    System.out.println(builder);
    System.out.println(c);

    //String类型与  StringBuilder类 互转
    String str = "bnu";
    StringBuilder stringBuilder = new StringBuilder(str);
    String s = stringBuilder.toString();

}

}
一些面试题
StringBuilder 底层默认char数组长度为16

StringBuilder 底层的扩容机制 是 : 原有的数组长度*2+2

package oop2.demo06;

public class StringL {

public static void main(String[] args) {
    String str = "abcd";
    String a = "a";
    String b = "b";
    String c = "c";
    String d = "d";
    //字符串拼接的时候,如果全部是常量 ,和直接写一个结果的含义是一样的
    String str2 = "a" + "b" + "c" + "d";    //创建了几个对象?  1个

    String str3 = a+b+c+d;     //创建了1个对象
    //只要含有变量的连接,采用的就是优化的机制:
    StringBuilder builder = new StringBuilder();
    builder.append(a);
    builder.append(b);
    builder.append(c);
    builder.append(d);

    System.out.println(str==str2);  //true
    System.out.println(str2==str3);  //false
}

}

原创文章:https://www.qqhhs.com,作者:起航®,如若转载,请注明出处:https://www.qqhhs.com/53.html

版权声明:本站提供的一切软件、教程和内容信息仅限用于学习和研究目的,请于下载的24小时内删除;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

Like (0)
Donate 受君之赠,荣幸之至 受君之赠,荣幸之至 受君之赠,荣幸之至 受君之赠,荣幸之至
Previous 2023年1月10日
Next 2023年1月10日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

qhhl

QQ-175142992024110802215838同号

SHARE
TOP
“人们不愿意相信,一个土匪的名字叫牧之”