作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段宣告。謝謝!
之前的Java基礎系列中討論了Java最核心的概念,特別是物件導向的基礎。在Java進階中,我將對Java基礎進行補充,並轉向應用層面。
大部分程式語言都能夠處理字串(String)。字串是有序的字符集合,比如"Hello World!"。在Java中,字串被儲存為String類物件。呼叫字串物件的方法,可以實現字串相關的操作。
String類包含在java.lang包中。這個包會在Java啟動的時候自動import,所以可以當做一個內建類(built-in class)。我們不需要顯式的使用import引入String類。
建立字串
我們之前使用類來建立物件。需要注意的時候,建立String類物件不需要new關鍵字。比如:
public class Test
{
public static void main(String[] args)
{
String s = "Hello World!";
System.out.println(s);
}
}
實際上,當你寫出一個"Hello World"表示式時,記憶體中就已經建立了該物件。如果使用new String("Hello World!"),會重複建立出一個字串物件。
An Object
String類是唯一一個不需要new關鍵字來建立物件的類。使用的時候需要注意。
字串操作
可以用+實現字串的連線(concatenate),比如:
"abc" + s
字串的操作大都通過字串的相應方法實現,比如下面的方法:
方法 效果
s.length() 返回s字串長度
s.charAt(2) 返回s字串中下標為2的字元
s.substring(0, 4) 返回s字串中下標0到4的子字串
s.indexOf("Hello") 返回子字串"Hello"的下標
s.startsWith(" ") 判斷s是否以空格開始
s.endsWith("oo") 判斷s是否以"oo"結束
s.equals("Good World!") 判斷s是否等於"Good World!"
==只能判斷字串是否儲存在同一位置。需要使用equals()判斷字串的內容是否相同。
s.compareTo("Hello Nerd!") 比較s字串與"Hello Nerd!"在詞典中的順序,
返回一個整數,如果<0,說明s在"Hello Nerd!"之前;
如果>0,說明s在"Hello Nerd!"之後;
如果==0,說明s與"Hello Nerd!"相等。
s.trim() 去掉s前後的空格字串,並返回新的字串
s.toUpperCase() 將s轉換為大寫字母,並返回新的字串
s.toLowerCase() 將s轉換為小寫,並返回新的字串
s.replace("World", "Universe") 將"World"替換為"Universe",並返回新的字串
不可變物件
String類物件是不可變物件(immutable object)。程式設計師不能對已有的不可變物件進行修改。我們自己也可以建立不可變物件,只要在介面中不提供修改資料的方法就可以。
然而,String類物件確實有編輯字串的功能,比如replace()。這些編輯功能是通過建立一個新的物件來實現的,而不是對原有物件進行修改。比如:
s = s.replace("World", "Universe");
右邊對s.replace()的呼叫將建立一個新的字串"Hello Universe!",並返回該物件(的引用)。通過賦值,引用s將指向該新的字串。如果沒有其他引用指向原有字串"Hello World!",原字串物件將被垃圾回收。
不可變物件
Java API
Java提供了許多功能強大的包。Java學習的一個重要方面是瞭解這些包以及其中包含的API(Application Programming Interface)。String類定義在java.lang.String。你可以查詢下面的Oracle網址,來找到該類的官方文件:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
該文件中包含了String類最全面的介紹。
事實上,API文件中有豐富的內容,你通過下面連結概覽:
http://docs.oracle.com/javase/6/docs/api/
歡迎繼續閱讀“Java快速教程”系列文章