1、String類
-----String類描述的是文本字符串序列,用于操作和創建字符串。
-----創建String類的對象的兩種方式:? ①""直接賦值法???? ②new關鍵字法
-----字符串對象的比較:?
????? A. String str1= "found"這個語句會先檢查字符串常量池中是否存放有"found"這個字符串對象,如果沒有存在,那么就會在字符串常量池中創建這個字符串對象,如果存在則直接返回該字符串的內存地址值。
????? B. String str3 = new String("found")該語句會創建兩個對象。首先會檢查字符串常量池中是否存在found這個字符串對象,如果不存在就會創建,如果存在就返回內存地址值,創建出來后,new String這個語句就會在堆內存中開辟一個字符串對象。總共兩個對象。
??? ? C.為什么str1 == str2 →true,str3 == str4 → false?
①比較兩個String不應該用==,第二種情況str3 == str4使用str3.equals(str4)就是true了。
②在java里物體的名字相等于一個標簽。當你做第一種時,"found"被創造出來,并打上了一個str1的標簽,然后同一個物體又被打上了str2這個標簽,但本質上是同一個物體,所以str1 == str2 →true。
③第二種,str4是一個新的Object,存儲位置和str3不一樣,str3和str4指向了不同的對象。所以str3 == str4 → false。
-----獲取字符方法:
int length() 獲取字符串的長度
char charAt(int index) 獲取特定位置的字符 (角標越界)
int indexOf(String str) 獲取特定字符的位置(overload)
int lastIndexOf(int ch) l獲取最后一個字符的位置
-----判斷方法:
-----轉換方法:
-----其他方法:
String replace(char oldChar, char newChar) 替換
String[] split(String regex) 切割
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)截取字串
String toUpperCase() 轉大寫
String toLowerCase() 轉小寫
String trim() 去除空格
-----練習:
① 去除字符串兩邊空格的函數。
補:String自帶的去除兩邊空格函數trim()源代碼
②獲取上傳文件名 "D:\20120512\day12\Demo1.java"。
③將字符串對象中存儲的字符反序。
④求一個子串在整串中出現的次數
2、StringBuffer
-----由于String是不可變的,所以導致String對象泛濫,在頻繁改變字符串對象的應用中,需要使用可變的字符串緩沖區類。
-----特點:①默認緩沖區的容量是16;②線程安全的所有的緩沖區操作方法都是同步的,效率低。
①添加方法
StringBuffer("jack") 在創建對象的時候賦值
append() 在緩沖區的尾部添加新的文本對象
insert() 在指定的下標位置添加新的文本對象
②查看
toString() 返回這個容器的字符串
indexOf(String str) 返回第一次出現的指定子字符串在該字符串中的索引。
substring(int start) 從開始的位置開始截取字符串
③修改
④刪除
⑤反序
3、StringBuilder
StringBuilder 是JDK1.5之后提出的,線程不安全,但是效率要高。用法與StringBuffer類似。
===StringBuffr與StringBuilder的區別?
???? StringBuffer和StringBuilder類都表示內容可以被修改的字符串,StringBuilder是線程不安全的,運行效率高,如果一個字符串變量是在方法里定義,這種情況下只可能有一個線程訪問它,不存在不安全的因素,則用StringBuilder。如果在一個類里面定義成員變量,并且這個類的實例對象會在多線程環境下使用,用StringBuffer。
4、System
5、Runtime
6、Date
7、Math
練習:生成一個校驗碼
(參考自今日頭條小小爆醬)