zoukankan      html  css  js  c++  java
  • 【java基础】java字符串之StringBuffer和StringBuilder

    【一】简述区别

    package com.sxf.test.string;
    
    public class StringBufferStringBuilderTest {
        
        public static void main(String[] args) {
            
        }
        
        public static void test01(){
            //线程安全,char数组扩容的公式:value.length * 2 + 2;
            StringBuffer buffer=new StringBuffer();
            buffer.append("a");
            //每次toString都是new一个新的String对象,保存在堆里。
            //toStringCache属性,在每次toString方法,只要不向对象里添加新的字符串,就使用缓存的char数组返回新字符串。
            buffer.toString();
            buffer.trimToSize();
            buffer.capacity();
            
            //线程不安全,char数组的扩容公式: value.length * 2 + 2;
            StringBuilder builder=new StringBuilder();
            builder.append("a");
            //每次toString都new一个新的String对象,保存在堆里。
            builder.toString();
            builder.trimToSize();
            builder.capacity();
            
            //不同点
            //StringBuffer和StringBuilder。StringBuffer是线程安全的类,StringBuilder是非线程安全的类
            //
            
            //相同点
            //StringBuffer和StringBuilder都继承AbstractStringBuilder里
            //StringBuffer和StringBuilder都是fianl修饰的类,不可被重写。
            //StringBuffer和StringBuilder都默认初始化char数组的长度为16,或者带参构造(String.length+16)
            //trimToSize()方法,是去掉char数组没有被存放数值的的多余空间。底层是一次数组的copy
            
        }
    
    }
    View Code
  • 相关阅读:
    C#RSA的研究,C#、Java互通
    .NetCore接入Log4Net
    asp.net core 5.0 使用log4net
    C# 根据出生年月 计算天数/计算X岁X月X天字符串
    DateTime? 转对象出错的问题
    WPF新的窗口返回值的方式
    C# Post
    数据库跨服务器更新表内容
    sql server 初学乱记
    sql server 2008/k3 cloud 安装踩雷
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/8256780.html
Copyright © 2011-2022 走看看