StringBuffer:字符串缓冲区 ---->类似于String,但是不一样 (可变的字符序列)
线程安全------>线程----(多线程中说)
线程依赖于进程存在!进程,能够被系统资源调用的独立单位
一个进程可以有多个线程,每一个线程----->“执行单元”(任务)
线程安全---->同步的----->执行效率低
-
举例: 银行类的网站/医疗网站 ATM机取钱---->插卡--->输入密码---->查询余额---->取钱
StringBuilder:和StringBuffer具有相互兼容的API,它是线程不安全的类---->不同步----->执行效率高
举例:
论坛网站
博客…
单线程程序中:jvm在进行编译的时候 使用StringBuilder去替换StringBuffer
StringBuffer的构造方法:
public StringBuffer() :空参构造,创建一个空字符序列的字符串缓冲去 (推荐)
public StringBuffer(int capacity):构造一个字符串缓冲区对象,指定容量大小
public StringBuffer(String str):指定字符序列,长度加上初始容量16(总容量)
获取功能:
public int length():获取字符数(长度)
public int capacity():获取字符串缓冲区容量**
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer() ;
System.out.println("sb:"+sb); //空字符序列;重写Object的toString()
System.out.println(sb.length());
System.out.println(sb.capacity());
System.out.println("------------------------------");
StringBuffer sb2 = new StringBuffer(20) ;
/**
* 内部实现---->调用父类的构造函数: 相当于内部创建了一个字符数组对象
* AbstractStringBuilder(int capacity) {
* value = new char[capacity];
* }
*/
System.out.println("sb2:"+sb2);
System.out.println(sb2.length());
System.out.println(sb2.capacity());
System.out.println("------------------------------");
StringBuffer sb3 = new StringBuffer("hello") ; //'h','e','l','l','o'
System.out.println("sb3:"+sb3);
System.out.println(sb3.length());
System.out.println(sb3.capacity());
//StringBuffer sb4 = "world" ;
// String str = "world" ;
// StringBuffer sb4 = str ;
//String---->StringBuffer :有的时候使用的String类型的功能,但是结果需要一个StringBuffer类型
//StringBuffer--->String :可能使用过程中用的StringBuffer的功能,最终需要String类型
}
}