String


在Java中java.lang.String是一種class,與int、double等基本型態並不相同

1 建立String物件

1-1 不用new來建立String物件
String s="Hello World";
System.out.println(s+"的長度="+s.length());
----------------------------
Hello World的長度=11

僅看上面幾行可能會很疑惑,字串s不是只是一個變數嗎?為什麼他可以像Object一樣使用Object專屬的function呢?

基本上當我們用 " "來描述一個字串時,我們就已經使用了string物件,JAVA編譯器會自動建立一個String物件來描述" "內的文字,此物件會存放在string的儲存池裡

1-2 使用new來建立String物件
String s=new String("Hello World");

上述程式碼就可以很明顯看出,我們建立了一個新的String Object

2 字串的比較 .equals()

兩個字串物件使用==進行比較,比較的並不是兩字串內容是不是相同,比較的是兩物件是否指向同一個位址

//PURPOSE:錯誤比較兩字串
String s1 = new String("Hello World");
String s2 = new String("Hello World");
System.out.println(s1 == s2);    
-------------------------
false

切記,比較兩字串內容是否相同,在java裡只能使用.equals() function

//PURPOSE:正確比較兩字串
String s1 = new String("Hello World");
String s2 = new String("Hello World");
System.out.println(s1.equals(s2));
-------------------------
true

3 字元與字串

  • 用字元陣列產生字串
//PURPOSE:用字元陣列產生字串
char[] CharSequence={'H','e','l','l','o',' ','W','o','r','l','d'};
String string=new String(CharSequence);
System.out.println(string);    
------------------------------
Hello World

若第一行改寫成char[] CharSequence={"H", "e" , "l", "l" , "o", ....}; 則會錯誤

此為新手常犯的錯誤,請一定要切記

用" "的是字串,用' '的是字元,這兩者務必分清楚
  • 字元與字串的不同

許多人會疑惑,可是我用"H"裡面一樣是只放一個英文字,char不是應該放得下嗎?

但是我們看到的"H"事實上放了'H'和一個'\0'結束符號,這個結束符號就是string與char最大的不同,不然除卻物件與型態的不同,string本身其實就是一個字元陣列而已。

  • 用字串產生字元陣列
//PURPOSE:用字串產生字元陣列,並將字串內每個字元分行印出
String s="Hello World";
char[] charArray=s.toCharArray();
for(char c : charArray){
    System.out.println(c);
}
---------------------------
H
e
l
l
o

W
o
r
l
d

4 substring()取出子字串

StringObject.substring(int beginIndex,int endIndex);

System.out.println("Hello World".substring(1, 4));
-------------------------
ell

上述例子substring取出的範圍是從 (索引1)~(索引4的前一個字)

容易誤以為是到(索引4),請小心

results matching ""

    No results matching ""