1. 程式人生 > >java基礎學習——19、String類

java基礎學習——19、String類

開始 play htm align als 語言 clas tab log

之前的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基礎學習——19、String類