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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • do you know what i mean_do you know what

    do you know what i mean_do you know whatOriginalLinkQ: “HowdoyouknowGodisreal?” -GregoryM.A: Thisisthequestionthateverysinglepersonatonepoint(hopefully)intheirlifetimewillask.Mostpeoplewillprobablyaskitmanyt

    2022年10月8日
    0
  • 将.db文件导入SQLServer2008数据库「建议收藏」

    将.db文件导入SQLServer2008数据库

    2022年3月4日
    45
  • 基于人脸识别的考勤系统:Python3 + Qt5 + OpenCV3 + FaceNet + MySQL

    基于人脸识别的考勤系统:Python3 + Qt5 + OpenCV3 + FaceNet + MySQL本项目使用Python3.8编写,QtDesigner(QT5)设计主界面,PyQt5库编写控件的功能,使用开源FaceNet人脸识别算法进行人脸识别,使用眨眼检测来实现活体识别,使用OpenCV3实现实时人脸识别。同时,将班级学生信息,各班级学生人数、考勤信息录入到MySQL数据库中,方便集中统一化管理。因为本项目仅由我一个人开发,能力精力有限,实现了预期的绝大多数功能,但是活体检测功能还存在bug,如果小伙伴对本项目中有不懂的地方或者发现问题,欢迎提出。

    2022年5月13日
    41
  • pip安装scrapy失败_python的scrapy框架的安装

    pip安装scrapy失败_python的scrapy框架的安装错误如图所示,running setup.py install for Twisted…..errorTwisted依赖库安装报错,重新下载手动安装一下下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs注意:看下安装的python是什么版本,我安装的python 3.9.0,就下载cp39,64位的下载安装的版本不对,就会报:Twisted-20.3.0-cp38-cp38-win_amd64.whl is not a support…

    2022年8月18日
    6
  • 支持向量回归(SVR)的详细介绍以及推导算法

    支持向量回归(SVR)的详细介绍以及推导算法1SVR背景2SVR原理3SVR数学模型SVR的背景SVR做为SVM的分支从而被提出,一张图介绍SVR与SVM的关系这里两虚线之间的几何间隔r=d∣∣W∣∣\frac{d}{||W||}∣∣W∣∣d​,这里的d就为两虚线之间的函数间隔。(一图读懂函数间隔与几何间隔)这里的r就是根据两平行线之间的距离公式求解出来的SVR的原理SVR与一般线性回归的区别SVR一般线性回归1.数据在间隔带内则不计算损失,当且仅当f(x)与y之间的差距的绝对值大于ϵ\

    2022年6月6日
    41
  • python android开发_python编制应用程序

    python android开发_python编制应用程序本节目录:1.下载和安装ScriptingLayerforAndroid(SL4A)2.下载和安装Pythonforandroid3.第一个HelloWorld程序1.下载和安装ScriptingLayerforAndroid(SL4A)ScriptingLayerforAndroid(SL4A)是一个开源项目,目标是为android系统提供脚本语言的支持,使用…

    2022年8月12日
    6

发表回复

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

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