java-String 类别

由字元所組成的一串文字符號,稱之為字串,在Java中字串可以使用String類別來建構,例如您可以使用以下的方式來宣告並初始一個字串變數:
String text = "字串的使用";

注意字串的直接指定必須使用"",而字串是使用Unicode字元來建構,在建構一個字串物件變數之後,您可以直接在輸出串流中指定變數名稱來輸出字串,例如:
System.out.println(text);

字串的串接在Java中可以直接使用 + 運算子,+ 本來是加法運算子,而它被重載(Override)為可以直接用於字串的串接,例如您可以這麼使用字串:
String msg = "哈囉!";
msg = msg + "Java Programming!";
System.out.println(msg);

這一段程式碼會在主控台上顯示 "哈囉!Java Programming!"。

用於生成字串物件的String類別擁有幾個操作字串的方法,在這邊先介紹幾個常用的:

length() 取得字串的字元長度
equals() 判斷原字串中的字元是否相等於指定字串中的字元
toLowerCase() 轉換字串中的英文字元為小寫
toUpperCase() 轉換字串中的英文字元為大寫


下面這個程式介紹以上的幾個操作字串方法的使用與結果:
  • UseString.java
public class UseString { 
    public static void main(String[] args) { 
        String text = "hello"; 
 
        System.out.println("字串內容: " + text); 
        System.out.println("字串長度: " + text.length()); 
        System.out.println("等於hello? " + 
                                 text.equals("hello")); 
        System.out.println("轉為大寫: " + 
                                 text.toUpperCase()); 
        System.out.println("轉為小寫: " + 
                                 text.toLowerCase()); 
    } 
} 

執行結果:
字串內容: hello
字串長度: 5
等於hello? true
轉為大寫: HELLO
轉為小寫: hello


如果您要將輸入的字串轉換為整數、浮點數等等資料型態,您可以使用以下各類別所提供的各個靜態剖析方法:
Byte.parseByte(字串) 將字串剖析為位元
Short.parseShort(字串) 將字串剖析為short整數
Integer.parseInt(字串) 將字串剖析為integer整數
Long.parseLong(字串) 將字串剖析為long整數
Float.parseFloat(字串) 將字串剖析為float浮點數
Double.parseDouble(字串) 將字串剖析為double浮點數


注意如果指定的字串無法剖析為指定的資料型態數值,則會發生NumberFormatException例外。

之前宣告字串時,都是以這樣的樣子來宣告:
String str = "caterpillar";

這樣的宣告方式看來像是基本資料型態宣告,但事實上String並不是Java的基本資料型態,String是java.lang套件下所提供的類別,如果以配置物件的觀念來宣告字串,應該是這樣的:
String str = new String("caterpillar");

不過事實上它與下面這段是有差別的:
String str = "caterpillar";

您可以參考 不可變的(immutable)字串 瞭解一下差別在哪邊。

一個字串其實是由字元陣列所組成,所以使用String類別宣告字串後,該字串會具有陣列索引的性質,以下介紹幾個與索引相關的方法:

char charAt(int index) 傳回指定索引處的字元
int indexOf(int ch) 傳回指定字元第一個找到的索引位置
int indexOf(String str) 傳回指定字串第一個找到的索引位置
int lastIndexOf(int ch) 傳回指定字元最後一個找到的索引位置
String substring(int beginIndex) 取出指定索引處至字串尾端的子字串
String substring(int beginIndex, int endIndex) 取出指定索引範圍子字串
char[] toCharArray() 將字串轉換為字元Array


下面這個程式是個簡單的示範:
  • UseString.java
public class UseString { 
    public static void main(String[] args) { 
        String text = "Your left brain has nothing right.\n" 
                 + "Your right brain has nothing left.\n"; 
 
        System.out.println("字串內容: "); 
        for(int i = 0; i < text.length(); i++) 
            System.out.print(text.charAt(i)); 

        System.out.println("\n第一個left: " + 
                              text.indexOf("left")); 
        System.out.println("最後一個left: " + 
                              text.lastIndexOf("left")); 
 
        char[] charArr = text.toCharArray(); 
        System.out.println("\n字元Array內容: "); 
        for(int i = 0; i < charArr.length; i++) 
            System.out.print(charArr[i]); 
    } 
} 

執行結果:
字串內容:
Your left brain has nothing right.
Your right brain has nothing left.

第一個left: 5
最後一個left: 64

字元Array內容:
Your left brain has nothing right.
Your right brain has nothing left.


在建構字串物件時,除了直接指定字串常數之外,您也可以使用字元陣列來建構,例如:
char[] name = {'c', 'a', 't', 'e', 'r',
               'p', 'i', 'l', 'l', 'a', 'r'};
String str = new String(name);

上面這個程式片段使用字元陣列name,建構出一個內容為"caterpillar"的字串。

除了以上所介紹的幾個方法之外,您應該查查API手冊,瞭解更多有關於String類別的方法,例如我們可以使用endsWith()方法來過濾檔案名稱,下面這個程式過濾出檔案類型為jpg的檔案:

  • UseString.java
public class UseString { 
    public static void main(String[] args) { 
        String[] filenames = {"caterpillar.jpg", "cater.gif", 
                 "bush.jpg", "wuwu.jpg", "clockman.gif"};
       System.out.print("過濾出jpg檔案: "); 
        for(int i = 0; i < filenames.length; i++) 
            if(filenames[i].endsWith("jpg")) 
                System.out.print(filenames[i] + " "); 
        System.out.println(""); 
    } 
} 

執行結果:
過濾出jpg檔案: caterpillar.jpg bush.jpg wuwu.jpg

Java對於字串處理的能力算是很強的,您應該多多利用線上手冊,瞭解更多有關於 java.lang.String 的方法使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值