2019-06-05 java学习日记

StringBuffer与数组排序

StringBuffer类的概述

线程安全的可变字符序列;

StringBuffer是一个字符缓冲区;相当于一个容器。

每个字符缓冲区都有一定的容量,如StringBuffer()方法其初始容量为16个字符。
只要字符串缓冲区所包含的字符序列的长度没有超出此容量,
就无需分配新的内部缓冲区数组,如果内部缓冲区溢出,则此容量自动增大。

StringBuffer和String的区别

String是一个不可变的字符序列

StringBuffer是一个可变的字符序列

线程安全与线程不安全

可以理解为公开与私密,

如StringBuffer是线程安全的,是执行同步的,每一次都要判断,所以会比较慢;

而StringBuilder是线程不安全,是不执行同步的,所以会比较快。

 

 StringBuffer类的构造方法

无参构造方法: public StringBuffer();

指定容量的字符串缓冲区对象:public StringBuffer(int capacity);

指定字符串内容的字符串缓冲区对象:public StriingBuffer(String str);

StringBuffer的方法:

返回值当前容量:public int capacity();(理论值)

返回长度(字符数): public int length();(实际值)

 1 public static void main(String[] args) {
 2         StringBuffer sb = new StringBuffer();
 3         System.out.println(sb.length());            //容器中的字符个数,实际值
 4         System.out.println(sb.capacity());            //容器的初始容量,理论值
 5         
 6         StringBuffer sb2 = new StringBuffer(10);
 7         System.out.println(sb2.length());
 8         System.out.println(sb2.capacity());
 9         
10         StringBuffer sb3 = new StringBuffer("heima");
11         System.out.println(sb3.length());            //实际字符的个数
12         System.out.println(sb3.capacity());            //字符串的length + 初始容量
13         
14     }

StringBuffer的添加功能

public StringBuffer append(String str);
可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

public StringBuffer insert(int offset,String str):
在制定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,
底层是一个长度16的字符数组,当调用添加的方法时,不会再重新创建对象,
再不断向原缓冲区添加字符。

1   StringBuffer sb1 =new StringBuffer();
2   StringBuffer sb2 =sb1.append(true);
3   System.out.println(sb2);               //系统默认加上toString
4   System.out.println(sb1.toString());    //默认重写toString方法

StringBuffer的删除功能

public StringBuffer deleteCharAt(int index);
删除指定位置的字符,并返回本身

public StringBuffer delete(int start,int end)
删除从指定位置开始指定位置结束的内容,并返回本身

原文地址:https://www.cnblogs.com/Sherwin-liao/p/10980319.html