StringBuffer

文章目录

StringBuffer

  • 利用String 进行字符串的拼接,造成的问题:内存空间的浪费
    String s = “hello”; //创建hello字符串
    s+=“abc” //创建abc 字符串 //创建helloabc字符串

  • 进行字符串的拼接工作,采用JDK自带的
    java.lang.StringBuffer
    java.lang.StringBuilder

  • StringBuffer的构造方法 其初始容量为 16 个字符。所以在创建StringBuffer时,尽可能给定一个初始化的容量,减少底层的扩容次数.

  • StringBuffer和StringBuilder区别:synchronized修饰StringBuffer 表示StringBuffer在多线程环境下是安全的;StringBuilder是非线程安全

package Advance.StringBuffer;

import java.util.Arrays;

/**
 * @author 衣鱼
 *	 利用String 进行字符串的拼接,造成的问题:内存空间的浪费
 *		String s = "hello";			//创建hello字符串
 *		s+="abc"				//创建abc 字符串   //创建helloabc字符串
 *
 *		进行字符串的拼接工作,采用JDK自带的
 *			java.lang.StringBuffer
 *			java.lang.StringBuilder
 *			StringBuffer的构造方法 其初始容量为 16 个字符。
 *			所以在创建StringBuffer时,尽可能给定一个初始化的容量,减少底层的扩容次数
 */
public class StringBufferTest01 {
	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer();
									//StringBuffer的构造方法 其初始容量为 16 个字符。
									//所以在创建StringBuffer时,尽可能给定一个初始化的容量,减少底层的扩容次数
									 /*public StringBuffer() {
									        super(16);
									    }
									*/
									/*		//父类是16位的char[]  版本不同 有的的byte
									  AbstractStringBuilder(int capacity) {
							        value = new char[capacity];
							    	}
									 */
		//追加字符串 使用append()
		sb.append("123");
		sb.append("adf");
		sb.append(true);
		sb.append(123);
								/*  public AbstractStringBuilder append(int i) {
								        if (i == Integer.MIN_VALUE) {
								            append("-2147483648");
								            return this;
								        }
								        int appendedLength = (i < 0) ? Integer.stringSize(-i) + 1
								                                     : Integer.stringSize(i);
								        int spaceNeeded = count + appendedLength;
								        ensureCapacityInternal(spaceNeeded);
								        Integer.getChars(i, spaceNeeded, value);
								        count = spaceNeeded;
								        return this;
								    }			 
								    //append 方法在底层进行追加的时候,如果满了会进行自动扩容
								    //String的value被final修饰 是不可变的,但是StringBufffer是可以扩容的利用copeOf
									/* private void ensureCapacityInternal(int minimumCapacity) {
									        // overflow-conscious code
									        if (minimumCapacity - value.length > 0) {
									            value = Arrays.copyOf(value,
									                    newCapacity(minimumCapacity));
									        }
									    }
									*/
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值