字符串的緩沖區StringBuilder
1、介紹
1、StringBuilder是一個可變的字符序列,好像是一個容器,因為在類中提供了修改私有成員變量的方法。
常用的方法是append和insert,就是在StringBuilder對象本身上,進行修改操作。
2、StringBuilder底層和String底層都是維護了一個字符數組,數組本身私有的,因為String類型沒有向外暴露修改私有成 員的方法,所以不能修改,StringBuilder向外暴露了修改私有成員的方法,可以修改字符序列。
3、StringBuilder和String都是用來描述字符串。
4、String不可修改,長度也不可以改變
5、StringBuilder可修改,長度也可以修改,比較靈活。
2、 StringBuilder的構造方法
StringBuilder():創建一個容器,初始容量為16
StringBuilder(String str):創建了一個容器,初始空量為16+str.length()
StringBuilder(int capacity):創建了一個容器,初始容量為capacity
capacity():獲取當前容器的大小
length():獲取當前容器中的字符個數
自動擴容
3、添加功能
1.append(任意類型):可以將任意數據類型,轉成字符串,添加到容器中。
2.insert(int index,任意類型):可以將任意類型添加到指定的位置。
4、刪除功能
1.StringBuilder delete(int start, int end):包含頭不含尾
2.StringBuilder deleteCharAt(int index)
5.替換和反轉功能
1.replace()
2.reverse()
6、String和StringBuilder拼接字符串的區別
1.使用String類型接拼字符串:時間和空間上都非常浪費。
String str = "abc";
str+="abc";
2.使用StringBuilder拼接字符串的時候,就是往容器不斷地添加,
3.String和StringBuilder的類型轉換
1. String轉成StringBuilder
StringBuilder的構造方法
append方法
2. StringBuilder轉成String
toString()方法
String()的構造方法
7、StringBuffer和StringBuilder的區別
1.共同點
都是字符串的緩沖區,都是字符串的容器,都是可變的字符串列。
2.不同點
1.出現版本不同:
StringBuffer在jdk1.0出現
StringBuilder在jdk1.5出現
2.線程安全不同:
StringBuffer是線程安全的,在多線程環境下仍然保持數據安全
StringBuilder是線程不安全的,在多線程下無法保證線程據安全
3.效率不同
StringBuffer的效率低
StringBuilder的效率高

public class Demo01 { public static void main(String[] args) { String str = "abc"; update(str); System.out.println(str);//abc } private static void update(String str) { str = "xyz"; System.out.println(str);//xyz } }

public class Demo06 { public static void main(String[] args) { StringBuilder sb = new StringBuilder("abc"); update(sb); System.out.println(sb);//abc } private static void update(StringBuilder sb) { sb = new StringBuilder("xyz"); System.out.println(sb);//xyz } }

public class Demo03 { public static void main(String[] args) { StringBuilder sb = new StringBuilder("abc"); update(sb); System.out.println(sb);//xyz } private static void update(StringBuilder sb) { sb.replace(0, sb.length(), "xyz"); System.out.println(sb);//xyz } }
基本類型的包裝類
1、包裝類
1、基本數據類型有八種,都是非常簡單的數據類型。
2、在這些類型中,只能表示簡單的數據,不能包含一些對數據的操作,沒有辦法 存儲描述這些數據的崆,需一個
引用數據類型,能將基本數據類型進行包裝,提供一些操作基本類型的方法,定義一些描述數據的數據。
3、基本類型的包裝類
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
2、Integer類
1.以Integer舉例,舉一反三
2.Integer類型的對象中,維護了一個私有成員的變量,是一個int類型。
3.提供了在int,Integer,String類型之間相互轉換的方法
4.提供了一些常量
Integer的構造方法
Integer(int value)
構造一個新分配的 Integer 對象,它表示指定的 int 值。
Integer(String s)
構造一個新分配的 Integer 對象,它表示 String 參數所指示的 int 值。
Integer類型的成員方法
1.xxxValue():可以將Integer類型的對象,轉成其它的基本數據類型
2.常用靜態方法
static int parseInt(String s):將字符串以十進制的方式解讀為一個int類型
static int parseInt(String s, int radix): 將字符串以radix的方式解讀為一個int類型
static String toBinaryString(int i):使用二進制的表示方式來表示數字
static String toOctalString(int i)
static String toHexString(int i)
String toString()
static Integer valueOf()
Integer類型的常量
static int MAX_VALUE
值為 2**31-1 的常量,它表示 int 類型能夠表示的最大值。
static int MIN_VALUE
值為 -2**31 的常量,它表示 int 類型能夠表示的最小值。
static int SIZE
用來以二進制補碼形式表示 int 值的比特位數。
static Class<Integer> TYPE
表示基本類型 int 的 Class 實例。
Integer,int,String類型互相轉換的總結
1.Integer轉為int類型
intValue()
2.int轉為Integer類型
構造方法
3.Integer轉為String的類型
toString()
4.String轉為Integer
構造方法
valueOf()
5.int轉為String
Integer.toString(int i)
5+" "
6.String轉為int類型
Integer.parseInt(String str);
自動裝箱和拆箱(JDK1.5之后)
裝箱:基本數據類型轉換包裝類
拆箱:包裝類轉為基本數據類型

public class Demo03 { public static void main(String[] args) { Integer it = 100;//自動裝箱 new Integer(100) int i = it;//自動拆箱 100 int result = it + 200;//自動拆箱 } }