zoukankan      html  css  js  c++  java
  • Java基础——String、StringBuiler、StringBuffer的用法和区别

    1.区别

    1.1 三者本质区别

    String:每次增加数据都会开辟新空间,存储数据,将上一块空间通过GC进行回收

    StringBuiler、StringBuffer:是可变长度,数据增加是直接在现有空间进行操作

    1.2 StringBuiler StringBuffer区别

    非线程安全 StringBuiler:

    线程安全 StringBuffer:多线程中建议使用

    2.用法

    2.1 三者用法

    String str ="abc1";
    str += "jk";
    
    StringBuilder str2 = new StringBuilder("abc2");
    str2.append("jk");
    
    StringBuffer str3 = new StringBuffer("abc3");
    str3.append("jk");

    2.2 具体示例

    package com.java8.string0824;
    
    public class Test1 {
    
        public static void main(String arg[]){
    
            // 1.String
            // 每次增加数据都会开辟新空间,存储数据,将上一块空间通过GC进行回收
            // 循环过程中:开辟1000个空间,销毁999次
            long startTime = System.currentTimeMillis();
            String str ="abc1";
            System.out.println(str);
            for (int i = 0; i < 1000; i++) {
                str += "jk";
            }
            System.out.println(str);
            long endTime = System.currentTimeMillis();
            System.out.println(endTime - startTime);
    
    
            // 2.StringBuilder
            // 是可变长度,数据增加是直接在现有空间进行操作
            // 不会开辟和销毁新空间
            // 仅仅在现有空间中,增加数据
            long startTime2 = System.currentTimeMillis();
            StringBuilder str2 = new StringBuilder("abc2");
            System.out.println(str2);
            for (int i = 0; i < 1000; i++) {
                str2.append("jk");
            }
            System.out.println(str2);
            long endTime2 = System.currentTimeMillis();
            System.out.println(endTime2 - startTime2);
    
            // 3.StringBuffer
            // 是可变长度,数据增加是直接在现有空间进行操作
            // 不会开辟和销毁新空间
            // 仅仅在现有空间中,增加数据
            long startTime3 = System.currentTimeMillis();
            StringBuffer str3 = new StringBuffer("abc3");
            System.out.println(str3);
            for (int i = 0; i < 1000; i++) {
                str3.append("jk");
            }
            System.out.println(str3);
            long endTime3 = System.currentTimeMillis();
            System.out.println(endTime3 - startTime3);
        }
    }
    

    结果:

    3.String、StringBuiler、StringBuffer的运行速度

    StringBuile > StringBuffer > String

    4.PS

    String:针对少量的字符串操作

    StringBuiler、StringBuffer:大量字符串操作使用另外两个

  • 相关阅读:
    要学习编程?这10件事情你知道了吗?
    JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
    这8个免费的网上课程可以有助你的技术成长
    给游戏开发初学者的10条建议
    21个国外受欢迎的学习编程的网站:总有一个理由会让你爱上它们
    hibernate 知识梳理
    struts2 知识梳理
    maven 相关
    c#配置log4net步骤
    arcobject 相关
  • 原文地址:https://www.cnblogs.com/iriswang/p/11084638.html
Copyright © 2011-2022 走看看