Java基礎——常用物件API(一)String類和StringBuffer類
String
一、特點
- 字串是一個特殊的物件。
- 字串一旦初始化就不可被改變。
問:String str = "abc" 和 String str1 = new String("abc") 有什麼區別?
new出來的物件在堆記憶體中,產生兩個物件但都在堆記憶體中;
直接賦值物件在字串常量池中,由String類來維護,可以被共享。
equals方法:就是比較兩個字串是否一樣
二、建構函式
1.String()
String s = new String(); 等效於 String s = "";但不等效於String s = null;
2.String(byte[] bytes)
將一個位元組陣列變成字串,但轉換成了ASCII碼。
3.String(char[] chars)
將一個字元陣列轉換成字串。
或者採用String(char[] chars, int offset, int length)//其中offset為偏移量,length字串長度。
三、方法
按照面向物件的思想對字串進行功能分類。
1.獲取
1.1.獲取字串長度.length(),
1.2.char charAt(int index),
1.3.int indexOf(char ch)第一次出現字元處的索引。
1.4.int indexOf(char ch, int fromIndex)
類似的還有搜尋String字串,以及lastIndexOf方法從後往前找
1.5.String substring(int beginIndex, int endIndex)獲取從哪到哪(endIndex-1)的子字串。、
2.轉換
2.1.將字串變成字串陣列(字串的切割)
String[] split(String regex):涉及到正則表示式.
簡單來說,","可以切,“.”不能切,得轉換成"\\."切。
2.2.將字串變成字元陣列。
char[] toCharArray();
2.3.將字串變成位元組陣列。
byte[] getBytes();
2.4.將字串中的字母轉成大小寫。
String toUpperCase();大寫
String toLowerCase();小寫
2.5.將字串中的內容進行替換
String replace(char oldch,char newch);
String replace(String s1,String s2);
2.6.將字串兩端的空格去除。
String trim();
2.7.將字串進行連線 。
String concat(string);
3.判斷
3.1.兩個字串內容是否相同啊?
boolean equals(Object obj);
boolean equalsIgnoreCase(string str);忽略大寫比較字串內容。
3.2.字串中是否包含指定字串?
boolean contains(string str);
3.3.字串是否以指定字串開頭。是否以指定字串結尾。
boolean startsWith(string);
boolean endsWith(string);
3.4.比較,按字典順序比較兩個字串。
int compareTo(String str);//返回第一個不相同字元的Unicode差值
4.其他
String intern();
StringBuffer
一、概述
StringBuffer是字串緩衝區。用於儲存資料的容器。
1.特點:
- 長度不可變。
- 可以儲存不同的資料型別。
二、功能
1.新增:
1.1.append
StringBuffer append(data);//data基本是任意資料型別
使用:
StringBuffer sb = new StringBuffer();
StringBuffrt s1 = sb.append(4);
System.out.println(sb);
System.out.println(s1);
System.out.println(sb==s1);
輸出:
4
4
true
1.2.insert
StringBuffer insert(int offset, Data data);
使用:
StringBuffer sb = new StringBuffer();
sb.append(123);
sb.insert(1, "haha");
System.out.println(sb);
輸出:
1haha23
2.刪除
StringBuffer delete(int start, int end);包含頭不包含尾
StringBuffer deleteCharAt(int index);刪除指定位置元素
清空緩衝區:
sb.delete(0, sb.length());
3.查詢
char charAt(int index);
int indexOf(String str);
int lastIndexOf(String str);
4.修改
StringBuffer replace(int begin, int end, String str);//包含頭不包含尾
void setCharAt(int index, char ch);
5.其他
5.1.setLength()
void setLength(int length);
使用:
StringBuffer sb = new StringBuffer("asd");
sb.setLength(2);
輸出:
as
5.2.reverse()反轉
StringBuilder
與StringBuffer一毛一樣,但不保證同步。從1.5開始使用。由於一模一樣,所以在一般情況下儘量使用StringBuilder以使速度更快。
那麼StringBuffer和StringBuilder的安全性體現在哪裡呢?
在讀寫操作上加了鎖。
jdk一般升級趨勢:
- 簡化書寫;
- 提高效率;
- 增加安全性。