String的特點以及String和StringBuilder常用的方法

String的特點:

1.String使用final修飾,不能被繼承,在字符串的底部封裝了字符數組以及針對字符數組的操作。

2.字符串對象一旦被創建內容將不會改變(這個是對重用對象來說的,後面將會說道原因),但是字符串的引用可以重新賦值。

3.java語言中的字符串使用Unicod編碼方式,任何一個字符串對應兩個字節的長度。

關於字符串對象一旦被創建就不能被改變的原因解釋如下:

       由於字符串的重用的概率遠遠大於修改的概率,因此java中規定字符串對象一旦被創建,就不能改變。我們都知道基本數據類型存放在棧裏面,引用數據類型存放在堆裏面,當程序中多次出現相同的字符串對象的時候,爲了降低內存的開銷,java中提供一個常量池(用來存放字符串字面量),建立的引用指向同一個內存區,因此字符串對象一旦被創建,就不能改變。 如果使用new的話將會強制的創建一個對象。

String常用的方法:

1.獲取字符串長度:

package Day01;
/**
 * int length()
 * 獲取字符串長度
 * 無論是中文還是英文每個字符都是一個長度
 * @author 123
 *
 */
public class StringDemo1 {

	public static void main(String[] args) {
		String str="我愛學習";
		System.out.println(str.length()); 

	}

}

2.indexOf方法,該方法有幾個重載方法:

package Day01;
/**
 * int indexOf(String str)
 * 該方法用來查找給定的字符串在當前字符串中的位置
 * 如果有返回下標,如果沒有返回-1。
 * 該方法有幾個重載方法
 * @author 123
 *
 */
public class StringDemo2 {

	public static void main(String[] args) {
		String str="thinking in java";
		int index=str.indexOf("in");
		System.out.println("index:"+index);
		/**
		 * 重載方法允許從指定的位置開始查找
		 */
		index=str.indexOf("in",3);
		System.out.println("index:"+index);
		/**
		 * 查找最後一次出現字符串的位置
		 */
		index=str.lastIndexOf("in");
		System.out.println("index:"+index);
	}

}

3.字符串的截取:

package Day01;
/**
 * String substring(int start,int end)
  * 截取字符串,從指定的位置(start)開始截取到指定的位置
 * end
 * java api 有一個特點,通常用兩個數字表示範圍,都是
  * 含頭不含尾
 * @author 123
 *
 */
public class StringDemo3 {

	public static void main(String[] args) {
		String str="thinking in java";
		/**
		 * 截取字符串
		 */
		String str1=str.substring(0, 10);
		System.out.println("sub:"+str1);
		/**
		 * String substring(一個參數)
		 * 表示從這個數字開始截取到字符串的末尾
		 */
		String str2=str.substring(1);
		System.out.println("sub:"+str2);
		

	}

}

4.去除字符串兩邊的空白字符

package Day01;
/**
 * String trim()
 * 去除當前字符串兩邊的空白字符
 * @author 123
 *
 */
public class StringDemo4 {

	public static void main(String[] args) {
		String str="   helloworld       ";
		String trim=str.trim();
		System.out.println(str);
		System.out.println(trim);

	}

}

5.返回指定位置的字符:

package Day01;
/**
 * char charAt(int index)
 * 返回指定索引位置的字符
 * @author 123
 *
 */
public class StringDemo5 {

	public static void main(String[] args) {
		String str ="thinking in java";
		//查看第五個字符是什麼?
		String str1=str.substring(4, 5);
		System.out.println(str1);
		char c=str.charAt(4);
		System.out.println(c);
		
		

	}

}

6.判斷字符串是否是以指定的字符結尾或者開始:

package Day01;
/**
 * booelan startWith(String Str)
 * boolena endWith(String str)
 * 判斷當前字符串是否是以指定的字符串開始或者結尾
 * @author 123
 *
 */
public class StringDemo6 {

	public static void main(String[] args) {
		String str="thinking in java";
		boolean start=str.startsWith("thi");
		System.out.println("strat:"+start);
		boolean end=str.endsWith("java1");
		System.out.println("end:"+end);
	}

}

7.字符串大小寫的轉化:

package Day01;
/**
 * String toUpperCase()
 * String toLowerCase()
 * 將當前字符串的英文轉化爲全部大寫或者小寫
 * 只支持英文
 * @author 123
 *
 */
public class StringDemo7 {
	public static void main(String[] args) {
		String str="我愛Java";
		String upper=str.toUpperCase();
		System.out.println("轉化爲大寫:"+upper);
		String lower=str.toLowerCase();
		System.out.println("轉化爲小寫:"+lower);
	}

}

StringBUilder的用法:由於java中規定了字符串對象一旦被創建就不能被改變,但是如果要改變的話,就需要重新創建新的字符串的對象,這樣的話,內存中將會不斷的開闢內存空間,與c語言不同的是,java中不在使用的對象有垃圾回收機制gc來回收,而c語言需要人爲的開闢內存空間和釋放內存空間,因此內存能夠得到充分的利用,但java的不同,因此gc的速度跟不上cpu的速度。爲此java中提供了對字符串操作的類StringBuilder。String中對字符串值的改變需要重新開闢內存空間,後者是在原來的基礎上對字符串進行操作。下面將對StrinBuilder中對字符串操作的方法做出介紹具體的代碼實現如下:

 

package Day01;
/**
 * StringBuiler提供了用於修改字符串內容的相關的方法
 * 其內部的維護是一個可變的字符數組,當數組滿了之後會自動的擴容,所以修改的都是在當前對象的
 * 內部完成
 * 當頻繁修改字符串內容時應該使用當前類來完成
 * @author 123
 *
 */
public class StringBuilderDemo1 {

	public static void main(String[] args) {
		String str="努力學習java";
		/*
		 * 爲了提高字符串的拼接的效率,應該將
		 * 將String轉化爲StringBuilder
		 * 可以使用有參的構造方法
		 * StringBuider也有無參的構造方法,默認
		 * 表示空字符串
		 */
		StringBuilder builder=new StringBuilder(str);
		/*
		 * 從StringBuilder轉化爲String
		 * 使用StringBuilder的toString方法即可
		 */
		str=builder.toString();
		/*
		 * StringBuilder append(String str)
		 * 向字符串末尾指定的內容。
		 * 有若干重載方法,參數的類型不同,這些重載方法允許追
		 * 加其他的內容(先轉化爲字符串在追加)
		 */
		builder.append(",爲了找個好工作");
		System.out.println(builder.toString());
		/*
		 * StringBuilder replace(int start,inr end,String Str)
		 * 將指定範圍之內的字符串替換爲指定的字符串
		 * 努力學習java,就是爲了改變世界!
		 */
		builder.replace(9, 16, "就是爲了改變世界!");
		System.out.println(builder.toString());
		/*
		 * StringBuilder delete(int start,int end)
		 * 將當前字符串的指定範圍之內的內容刪除
		 */
		builder.delete(0, 8);
		System.out.println(builder.toString());
		/*StringBuilder insert(int index,String str)
		 * 將給定的字符串插入到指定的位置,原位置以及後續字符串順
		 * 序向後移動。
		 * 
		 * 改革,就是爲了改變世界!
		 */
		builder.insert(0, "活着");
		System.out.println(builder.toString());
		/*
		 * StringBuilder reverse();
		 * 翻轉字符串
		 */
		builder.reverse();
		System.out.println(builder.toString());
		 

	}

}

由於時間比較倉促,關於StringBuilder的方法不做過多的介紹,但是程序中有關於代碼以及方法的註釋。

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