• 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:大量字符串操作使用另外两个

  • 相关阅读:
    对象形式传递
    解决DLNA方案的技术框架
    关于DLNA
    MAC配置Xcode的Cocos2d-x环境
    什么叫做双缓冲?
    Window7 Cocos2d-x配置开发环境
    Windows 8.1 Update 2更新了什么?
    微软发布Windows Phone 8.1 Update 和中文版Cortana“小娜”
    大开眼界 游览Facebook香港办公室
    小米的“假照片”危机
  • 原文地址:https://www.cnblogs.com/iriswang/p/11084638.html
Copyright © 2020-2023  润新知