---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
String概述
1.字符串是一個特殊的對象
2.字符串一旦初始化就不可以被改變
3.String str = "abc";
4.String str1 = new String("abc");
5.來自包java.lang.String ,public final class String,說明此類沒有子類。
class StringDemo{
public static void main(String[] args)
{
//s1是一個類類型變量,"abc"是一個對象。字符串最大的特點:一旦被初始化就不可以被改變。
String s1 = "abc";//在內存中有一個對象。
//改變了S1的指向,但是內存中"abc"對象沒有改變。
//s1 = "kill";
String s2 = new String("abc");//在內存中有兩個對象。
System.out.println(s1);
System.out.println(s1==s2);
//String類,重寫了Object類中的equals方法,定義了自己的內容,該方法用於判斷字符串是否相同。
System.out.println(s1.equals(s2));
}
}
String功能
String類適應於描述字符串事務
那麼他就提供了多個方法對字符串進行操作
常見的操作?
1.獲取
1.1字符串中的包含的字符數,也就是字符串的長度。
int length();獲取長度。
1.2根據位置獲取位置上的某個字符
char charAt(int index);//當訪問到字符串中不存在的腳標時會發生StringIndexOutOfBoundsException。
1.3根據字符獲取該字符在字符串中的位置
int indexOf(int ch);返回的是ch在字符串中第一次出現的位置。 如果沒有找到,返回-1
int indexOf(int ch,int fromIndex);從fromIndex位置開始,獲取ch在字符串中出現的位置。
int indexOf(String str);返回的是str在字符串中第一次出現的位置。
int indexOf(String str,int fromIndex);從fromIndex位置開始,獲取str在字符串中出現的位置。
int lastIndexOf(int ch);反向索引一個字符出現的位置,索引值仍然是由大到小的順序。
2.判斷
2.1字符串中是否包含某一個子串
boolean contains(CharSequence str);
特殊之處:indexOf(str):可以索引str第一次出現的位置,如果返回-1,表示該str不在字符串中存在。
所以,也可以用於對指定判斷是否包含。
if(str.indexOf("aa")!=-1)
而且該方法既可以判斷,又可以取出索引值。
2.2字符串中是否有內容
boolean isEmpty();原理就是判斷長度是否爲0.
2.3字符串是否是以指定內容開頭
boolean startsWith(String str);
2.4字符串是否是以指定內容結尾
boolean endsWith(String str);
2.5判斷字符串的內容是否相同。複寫了Object類中的equals方法
boolean equals(str);
2.6判斷內容是否相同,並忽略大小寫。
boolean equalsIgnoreCase(str);
3.轉換:
3.1將字符數組轉成字符串。
構造函數:String(char[]);
構造函數:String(char[],offset,count);將字符數組中的一部分轉成字符串。count是個數!
靜態方法:stattic copyValueOf(char[]);
靜態方法:stattic copyValueOf(char[],offset,count);
靜態方法:static valueOf(char[]);
3.2將字符串轉成字符數組。**********
char[] toCharArray();
3.3將字節數組轉成字符串。
String(byte[]);
String(byte[],offset,count);
3.4將字符串轉成字節數組。
byte[] getBytes();
3.5將基本數據類型轉成字符串。
static valueOf(int);
static valueOf(double);
3+"" //static valueOf(3);
特殊:字符串和字節數組在轉換過程中,是可以指定編碼表的。
4.替換
String replace(oldchar,newchar);//如果要替換的字符不存在,返回原串。
String replace(oldstr,newstr);//如果要替換的字符串不存在,返回原串。
5.切割
String[] split(regex);
6.子串 獲取字符串中的一部分
String substring(begin);//從指定位置開始到尾。如果腳標不存在,會發生異常。
String substring(begin,end );//包含頭,不包含尾。
7.轉換、去除空格、比較
7.1將字符串轉成大寫或者小寫。
String toUpperCase();
String toLowerCase();
7.2將字符串兩端的多個空格去掉。
String trim();
7.3對兩個字符串進行自然順序比較。
int compareTo(String);
StringBuffer
StringBuffer是字符串緩衝區。
是一個容器。
1.長度是可變的。
2.可以直接操作多個類型。
3.最終會通過toString方法變成字符串。
CURD
1.存儲
StringBuffer append();指定的數據作爲參數添加到已有數據的結尾處。
StringBuffer insert(index,數據):可以將數據插入指定index位置。
2.刪除
StringBuffer delete(start,end);刪除緩衝區中的數據,包含start,不包含end。
StringBuffer deleteCharAt(index);刪除指定位置的字符。
3.獲取
SringBuffer charAt(int index);
StringBuffer indexOf(String str);
StringBuffer lastIndexOf(String str);
int length();
String substring(int start,int end)
4.修改
StringBuffer replace(int start,int end,String str);
void setCharAt(index,ch);
5.反轉
StringBuffer reverse();
6.將緩衝區中的指定數據存儲到指定字符數組中
void getChars(int srcBegin,int srcEnd,char[ ] dst,int dstBegin);
class StringBufferDemo{
public static void main(String[] args){
//method_update();
StringBuffer sb = new StringBuffer("ABCDEF");
char[] chs = new char[4];
sb.getChars(1,4,chs,1);
for(int x=0;x<chs.length;x++){
sop("chs["+x+"]:"+chs[x]);
}
}
public static void method_update(){
StringBuffer sb = new StringBuffer("abcde");
sb.setCharAt(2,'k');
//sb.replace(1,4,"java");
sop(sb.toString());
}
public static void method_del(){
StringBuffer sb = new StringBuffer("abcde");
//sb.delete(1,3);
//清空緩衝區;
sb.delete(0,sb.length());
//sb.deleteCharAt(2);
sop(sb.toString());
}
public void method_add(){
StringBuffer sb = new StringBuffer();
sb.append("abc").append(true).append(34);
sb.insert(1,"qq");
sop(sb.toString());
}
public static void sop(String str){
System.out.println(str);
}
}
StringBuilder
JDK1.5之後出現,
StringBuffer線程同步。
StringBuilder是線程不同步。
單線程的情況下,StringBuffer(每次都要加鎖)效率低,StringBiluder效率高
多線程要用StringBuffer。
以後開發建議使用StringBiluder。多線程自己加鎖也可以。
JDK升級三因素:
提高效率 簡化書寫 提高安全性
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
詳情請查看:http://edu.csdn.net