由字元組成的文字符號稱為字串,例如"Hello"字串是由'H'、'e'、'l'、'l'、'o'五個字元組成,在某些程式語言中,字串是以字元陣列的方式存在,然而在Java中,字串是java.lang.String實例,用來包裹字元陣列,你可以用""包括一串字元來建立字串:
String name = "justin"; // 建立String實例
System.out.println(name); // 顯示justin
System.out.println(name.length()); // 顯示長度為6
System.out.println(name.charAt(0)); // 顯示第一個字元j
System.out.println(name.toUpperCase()); // 顯示JUSTIN
由於字串在Java中是物件,所以自然也就擁有一些可操作的方法,像是這個程式片段中所示範的,可以使用length()取得字串長度,使用charAt()指定取得字串中某個字元,索引從0開始,使用toUpperCase()將原本小寫的字串內容轉為大寫的字串內容。
如果你已經有一個char[]陣列,也可以使用new來建構String實例。例如:
char[] cs = {'j', 'u', 's', 't', 'i', 'n'};
String name = new String(cs);
如果必要,也可以使用String的toCharArray()方法,以將字串以char[]陣列傳回:
char[] cs2 = name.toCharArray();
在Java中可以使用+運算來串接字串。例如在JDK5之前並沒有System.out.printf()方法,所以常常看到文字示範簡單的輸出時會這麼撰寫:
String name = "Justin";
System.out.println("你的名字是:" + name);
如果要將輸字串轉換為整數、浮點數等基本型態,可以使用下表各類別提供的剖析方法:
| 方法 |
說明 |
Byte.parseByte(number) |
將number剖析為byte整數 |
Short.parseShort(number) |
將number為short整數 |
Integer.parseInt(number) |
將number為int整數 |
Long.parseLong(number) |
將number為long整數 |
Float.parseFloat(number) |
將number為float浮點數 |
Double.parseDouble(number) |
將number剖析為double浮點數 |
在上表中,假設
number參考至String實例,而該字串實際上是代表數字,例如"123"、"3.14"這樣的數字。如果無法剖析傳入的String實例,則會拋出NumberFormatException的錯誤。來個綜合練習,下面這個範例可以讓使用者輸入整數,輸入0後會計算所有整數總合並顯示:
package cc.openhome;
import java.util.Scanner;
public class Sum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long sum = 0;
long number = 0;
do {
System.out.print("輸入數字:");
number = Long.parseLong(scanner.nextLine());
sum += number;
} while(number != 0);
System.out.println("總合:" + sum);
}
}
一個執行結果如下:
輸入數字:20
輸入數字:30
輸入數字:0
總合:60
在認識陣列與字串,可以來看看程式進入點
main()中的String[] args了,在啟動JVM並指定執行類別時,可以一併指定命令列引數(Command line arguments)。例如:上面這個指令代表啟動JVM並執行
cc.openhome.Average類別,而Average類別會接受1、2、3、4這四個引數,這四個引數會收集 為String陣列,由main()中的args參考。實際來看個應用,底下這個範例可讓使用者命令列引數提供整數,計算出所有整數平均:package cc.openhome;
public class Average {
public static void main(String[] args) {
long sum = 0;
for(String arg : args) {
sum += Long.parseLong(arg);
}
System.out.println("平均:" + (float) sum / args.length);
}
}

