Java之String和StringBuilder類

Java之String和StringBuilder類

字符串廣泛應用 在 Java 編程中,在Java編程中,Java主要提供了String和StringBuilder類來處理字符串,今天我們就來看一看這兩個類的一些基本的使用。

一、String類

在Java中String屬於引用類型,所以我們在創建以及操作字符串的過程中應當使用一些不同於基本數據類型的方法。
1、創建字符串
在java中提供了很多種創建字符串的方法,這裏我們來看看最常用的兩種創建方法。

		String jj = "let us go"; //第一種
		String mm = new String("aaa"); //第二種
		System.out.println(jj);
		System.out.println(mm);

2、查看字符串長度
我們可以用String類中length方法查看字符串的長度。

		String jj = "let us go";
		System.out.println(jj.length());

最終輸出爲9

3.==和equals
我們先來看這樣一段代碼

		String jj = "let us go";
		String mm = new String("let us go");
		System.out.println(jj==mm);
		System.out.println(jj.equals(mm));

最終的輸出結果爲
在這裏插入圖片描述這是因爲由於String類型在Java中是引用類型,==比較的是所指向的對象的地址,而equals比較的是二者的值。很明顯本例中jj和mm他倆的引用不同但是值是相同的,所以就會產生上述結果。
4.一些常用的方法

String jj = "I love you guys";
System.out.println(jj.charAt(3));//查看jj在3位置上的字符
System.out.println(jj.concat(" and girls"));//jj後面聯接 and girls
System.out.println(jj.indexOf('y'));//查看第一個y的所在位置
System.out.println(jj.substring(2));//從第二個位置分割出字串
System.out.println(jj.replace("I", "He"));//將第一個I替換爲He
		

在這裏插入圖片描述
對於更多的方法,大家可以查看官方文檔,在這裏我就不多贅述了。

5.String類的不可變性
書上對於不可變的定義是這樣的:對象一旦被創建後,對象所有的狀態及屬性在其生命週期內不會發生任何變化。
String類就是一個不可變的類。
那爲什麼我們執行了那麼多方法,輸出的值也不一樣啊,爲啥不可變嘞??
其實解釋起來也很簡單,我們每次的replace這些操作,其實就是在堆內存中創建了一個新的對象。又由於我們String類是然後我們的jj指向不同的對象罷了。

二、StringBuilder類

那萬一我們要執行一些特殊的操作,比如說循環拼接字符串的這種工作,如果使用String類每次都會創建新的字符串對象,然後扔掉舊的字符串。這樣,絕大部分字符串都是臨時對象,十分浪費資源。
Java爲我們提供了一個可變的StringBuider類,這樣,在StringBuilder中進行字符串操作時,不會創建新的臨時對象。
下面我們來介紹StringBuilder中一些常用的方法

StringBuilder jj = new StringBuilder("zangjiji:");//創建與String類相似
jj.append("真帥");//zangjiji:真帥
jj.reverse();//翻轉字符串 帥真:ijijgnaz
jj.delete(5, 8);//從第五個字符刪除,直到第八個 帥真:ijnaz

jj.reverse();
jj.replace(0, 7, "大家都很");//從第0位直到第七位替換爲後面的串 大家都很帥

在早期的教科書上有的還會有StringBuffer類,StringBuffer與StringBuilder,這是Java早期的一個StringBuilder的線程安全版本,它通過同步來保證多個線程操作StringBuffer也是安全的,但是同步會帶來執行速度的下降。

StringBuilder和StringBuffer接口完全相同,而目前大部分字符串的操作都是單線程的,因此現在完全沒有必要使用StringBuffer。

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