JAVA中StringBuilder学习

JAVA中StringBuilder学习StringBuilder概述StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。作用:提高字符串的操作效率。通过代码可以说明publicclassDemo1StringBuilder{publicstaticvoidmain(String[]args){longstart=System.currentTimeMillis();StringBuildersb=newStringBuilder();

大家好,又见面了,我是你们的朋友全栈君。

StringBuilder概述

StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。
作用:提高字符串的操作效率。
通过代码可以说明

public class Demo1StringBuilder { 
   
    public static void main(String[] args) { 
   
        long start = System.currentTimeMillis();
        StringBuilder sb = new StringBuilder();


        for (int i = 0; i < 50000; i++) { 
   
            sb.append(i);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start);  // 6
// method();
    }

    private static void method() { 
   
        long start = System.currentTimeMillis();  // 获取1970年1月1日 0时0分0秒 到当前时间所经过的时间 是毫秒值
        String s = "";
        for (int i = 0; i < 50000; i++) { 
   
            s += i;
        }
        long end = System.currentTimeMillis();  // 记录循环结束时间
        System.out.println(end-start);  // 5114
    }
}

StringBuilder两种构造方式

public class Demo2StringBuilder { 
   
    public static void main(String[] args) { 
   
        StringBuilder sb = new StringBuilder();  // 无参构造
        System.out.println(sb);
        StringBuilder sb2 = new StringBuilder("sss");  // 有参构造
        System.out.println(sb2);
    }
}

StringBuilder的常用方法

appden()方法,表示添加数据

reverse()将字符串反转

toString()将StringBuilder转换成String类型的

具体代码如下

public class Demo3StringBuilder { 
   
    public static void main(String[] args) { 
   
        append();  // 添加数据
        reverse();  // 将字符串反转
        length();  // 计算字符串的长度
        StringBuilder sb = new StringBuilder();
        sb.append("skskk");
        // 将StringBuilder转换成String
        String s = sb.toString();  // 这里转换 虽然打印结果都一样但是类型不一样
        System.out.println(s);  // skskk
    }

    private static void append() { 
   
        // 向里边添加数据 通过append添加:并返回对象本身
        StringBuilder sb = new StringBuilder();
        sb.append(123);
        sb.append("asf");
        sb.append(true);
        System.out.println(sb);  // 123asftrue

        // 因为返回的是对象本身所以上边的也可以写成
        StringBuilder sb1 = new StringBuilder();
        sb1.append(123).append("asf").append(true);
        System.out.println(sb1);  // 123asftrue

        // 这里需要注意
        StringBuilder sb2 = new StringBuilder();
        StringBuilder sb3 = sb2.append("红色");
        StringBuilder sb4 = sb2.append("蓝色");
        System.out.println(sb2);  // 红色蓝色
        System.out.println(sb3);  // 红色蓝色
        System.out.println(sb4);  // 红色蓝色 这里的代码优化一下就得到了上边的代码
        sb2.append("红色").append("蓝色");
    }

    private static void reverse() { 
   
        StringBuilder sb = new StringBuilder();
        sb.append(1).append(2).append(3);
        System.out.println("反转之前:"+sb);
        sb.reverse();  // 通过reverse将字符串反转
        System.out.println("反转之后:"+sb);
    }
    private static void length() { 
   
        StringBuilder sb = new StringBuilder();
        sb.append("jlksjdlksjf");
        System.out.println("字符串的长度为:"+sb.length());  // 11
    }
}

StringBuilder的区别

String:内容是不可变的
StringBuilder:内容是可变的

    String s1 = "a";
    String s2 = s1+"b";
    此处s2 = s1 + "b"; 两个字符串相加,需要先把s1从String类型转换成Stringbuilder类型,然后才能将字符b添加里边,然后生成ab字符串,但是此时ab字符串还是StringBuilder类型。
    所以要先将StringBuildr类型转换成String类型才能将ab给s2,这也是为什么StringBuilder比String快的原因.

StringBuilder和String相互转换

1.StringBuilder转换为String
通过toString()就可以实现把StringBuilder转换为String。
String s = sb.toString();
2.String转换为StringBuilder
通过构造方法就可以实现把String转换为StringBuilder。
String s = “ss”;
StringBuilder sb = new StringBuilder(s);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160683.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 决策树算法(C4.5)

    决策树算法(C4.5)

    2021年11月19日
    35
  • JetBrains WebStorm 安装教程

    JetBrains WebStorm 安装教程首先声明,此方法仅用来参考学习,不得用于商业用途,请支持正版,学生可以免费申请到正版软件。网上有很多激活成功教程方法,可能不同的版本不一样,这篇文章就只针对JetBrainsWebStorm2018.1.5×64版本的软件。因为本人用的就是这个版本,亲测有效。——————2019年10月首先需要下载一个jar包:JetbrainsIde…

    2022年6月16日
    43
  • matlab多重比较lsd法,多重比较LSD-t值的计算(附证明方法)

    matlab多重比较lsd法,多重比较LSD-t值的计算(附证明方法)多重比较LSD-t值的计算问题的提出:向学术期刊投稿时,“变态”的审稿人向你“索要”LSD-t值,可是SPSS的输出结果中没有这个值——是不是有点悲催?!另外,大家还会有一个常见的疑问:采用LSD-t法进行两两比较之后得出来的p值,需不需要调整显著性水平?我们先把原始数据和答案给出来,然后再讲一讲其中的数理逻辑。本例使用的原始数据如下图所示,有兴趣的读者可以用本数据进行对照学习(本例采用单因素方差…

    2022年6月12日
    44
  • k8s监控工具(k8s工具)

    工具集合:后渗透:Kubesploit:https://github.com/cyberark/kubesploit安全评估:RedKube:https://github.com/lightspin-tech/red-kube容器攻击工具:ccat:https://github.com/RhinoSecurityLabs/ccat安全测试:Kubestriker:https://github.com/vchinnipilli/kubestriker地址GitHub-aqu

    2022年4月17日
    53
  • asp.net(C#)中Repeater嵌套绑定Repeater[通俗易懂]

    asp.net(C#)中Repeater嵌套绑定Repeater[通俗易懂]Repeater嵌套Repeater的结构:一般写过的都能看懂吧privatevoidRpTypeBind(){//GetQuestionTypeAndCount()返回一个datatablethis.rptypelist.DataSource=LiftQuestionCtr.GetQuestionTypeAndCount(

    2022年7月14日
    16
  • 深度图像基础知识(一)[通俗易懂]

    深度图像基础知识(一)[通俗易懂]深度图像(depthimage)也被称为距离影像(rangeimage),是指将从图像采集器到场景中各点的距离(深度)作为像素值的图像,它直接反映了景物可见表面的几何形状。深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。深度数据流所提供的图像帧中,每一个像素点代表的是在深度感应器的视野中,该特定的(x,y)坐标处物体到离摄像头平面最近的

    2022年4月25日
    46

发表回复

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

关注全栈程序员社区公众号