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


相关推荐

  • MySQL Longtext字段优化记录(一)[通俗易懂]

    MySQL Longtext字段优化记录(一)[通俗易懂]Longtext优化记录

    2022年5月14日
  • PS选区复制_ps怎么取消选区

    PS选区复制_ps怎么取消选区1.选区选中之后,利用移动工具,按住alt键,拖动即可复制所选区域。ps:再一个图层上操作。2.选区选中之后,Ctrl+c、Ctrl+v复制粘贴,按Ctrl+T移动。ps:新建一个图层操作,不

    2022年8月3日
  • [Java 8] (6) Lambda与资源管理

    [Java 8] (6) Lambda与资源管理

    2022年1月23日
  • BoundsChecker使用说明(代码调试)

    目录….1一、BoundsChecker简介….2二、安装环境….2三、BoundsChecker两种工作模式….3      3.1ActiveCheck..3      3.2FinalCheck..3四、特性和优点….5五、检测示例….65.1内存泄漏检测示例….65.2野指针检测示

    2022年4月17日
  • IDEA配置Maven(详细版)

    IDEA配置Maven(详细版)IDEA配置MavenIDEA创建Maven工程第一节IDEA集成Maven插件第二节使用骨架创建Maven的java工程第三节不使用骨架创建Maven的java工程第四节使用骨架创建Maven的javaweb工程第五节不使用骨架创建Maven的javaweb工程第六节IDEA使用Maven命令6.1方式一6.2方式二IDEA创建Maven工程第一节IDEA集成Maven插件打开IDEA,进入主界面后点击configure,然后点击settings在上面的快捷查找框

    2022年6月2日
  • el表达式的内置对象_IF嵌套函数

    el表达式的内置对象_IF嵌套函数1.模拟需求:从一个商品集合中取出所有商品,第一个商品用它的第一张图片,第二个商品用它的第二张图片2.起初按照通用思路,在c:forEach中定义一个varStatus,再通过vaStatus获取下标,结果写成了el表达式嵌套(如下),结果根本出不来 3.通过查资料发现,el表达式是不能直接写$进行嵌套的,如果要嵌套使用,需要省略掉嵌套里面的${}符号,如下就可以。

    2022年7月28日

发表回复

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

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