黑馬程序員------String(概述、功能、練習、StringBuffer、StringBuilder)

---------------------- 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章