前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java八大常用类(四) StringBuffer和StringBuilder类

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

作者头像
卢衍飞
发布2023-02-14 13:59:06
1830
发布2023-02-14 13:59:06
举报
文章被收录于专栏:技术分享交流

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

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

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

StringBuilder的使用 速度对比:

package oop2.demo06;

public class StringF {

代码语言:javascript
复制
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 {

代码语言:javascript
复制
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 {

代码语言:javascript
复制
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
}

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023 年 01 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档