ch11 常用的資料類型與其格式化

11-1 數字類型

11-1-1 Math類別

參考 p.11-3 程式範例 MathEx.java

11-1-2 Wrapper

  1. byte - Byte
  2. short - Short
  3. int - Integer
  4. long - Long
  5. float - Float
  6. double - Double
  7. char - Character
  8. boolean - Boolean

參考 p.11-7 程式範例 WrapperEx.java

11-1-3 AutoBoxing/AutoUnboxing

參考 p.11-10 程式範例 AutoBoxOverload.java

public class Ex03_AutoBoxOverload {
	public static void show(Long num) { // Overloading
		System.out.println("Long num = " + num);
	}

	public static void show(Short num) {
		System.out.println("Short num = " + num);
	}

	public static void show(int num) {
		System.out.println("int num = " + num);
	}

	public static void main(String[] args) {
		Integer box = new Integer(80); // Boxing
		int unbox = box.intValue(); // Unboxing
		
		Integer autobox = 90; // autoboxing
		int autounbox = autobox + 5; // autounboxing

		short num1 = 1;
		long num2 = 2;
		show(num1);
		show(num2);
	}
}

11-2 文字類型

11-2-1 String 類別

String 物件呼叫任何方法都不會改變自己實體的內容,稱為 Immutable

參考 p.11-12 程式範例 StringEx.java

import java.util.Scanner;

public class Ex04_StringEx {
	public static void main(String[] args) {
		String s1 = "CSIM";
		String s2 = "CSIM";
		System.out.printf("s1=%s, s2=%s\n", s1, s2);
		System.out.printf("s1==s2 is %b\n", s1 == s2);
		System.out.printf("s1.equals(s2) is %b\n", s1.equals(s2));

		Scanner sc = new Scanner(System.in);
		System.out.print("請輸入字串,例如大寫CSIM: ");
		String s3 = sc.next(); // 輸入 CSIM
		System.out.printf("s1=%s, s3=%s\n", s1, s3);
		System.out.printf("s1==s3 is %b\n", s1 == s3);
		System.out.printf("s1.equals(s3) is %b\n", s1.equals(s3));

		System.out.println("--------------------");

		String str = "A dog ";
		System.out.println(str.length());
		System.out.println(str.concat("!"));
		System.out.println(str.trim().concat("!"));
		System.out.println(str.indexOf("d")); // 從0開始
		System.out.println(str.charAt(3));
		System.out.println(str.substring(2, 5));
		System.out.println(str.replace("dog", "cat"));
		System.out.println(str.equalsIgnoreCase("A DOG "));
		System.out.println(str.startsWith("A"));
		System.out.println(str.endsWith("dog "));
		System.out.println(str.toLowerCase());
		System.out.println(str.toUpperCase());
		System.out.println(str); // str的內容 並未被改變 Immutable
	}
}

11-2-2 StringBuilder 類別

StringBuilder 與 String類似,最大的差別在物件呼叫任何方法時,物件內的內容會皆被修改,稱為 Mutable

參考 p.11-16 程式範例 StringBuilderEx.java

11-3 日期/時間類型

java.util.Date 物件內儲存自從1970年1月1日0時0分0秒起至指定日期/時間的毫秒(千分之1秒)

參考 p.11-18 程式範例 DateEx.java

11-4 數字與日期/時間格式設定

參考 p.11-20 程式範例 LocaleEx.java

11-4-1 NumberFormat 類別

參考 p.11-21 程式範例 NumberFormatEx.java

11-4-2 DateFormat 類別

參考 p.11-24 程式範例 DateFormatEx.java

11-5 規則運算式與相關類別

參考 p.11-25 表 11-10 規則運算式樣式說明

11-5-1 String 類別搭配規則運算式

參考 p.11-27 程式範例 StringRegex.java

11-5-2 Scannner 類別

參考 p.11-29 程式範例 ScannerEx.java

參考 p.11-31 程式範例 ScannerAdv.java

import java.util.Scanner;

public class Ex12_ScannerAdv {
	public static void main(String[] args) {
		String str = "1, 今天, true, 有午後雷陣雨, 0.1, 2, 0.39";
		Scanner scan = new Scanner(str);
		scan.useDelimiter("\\s*,\\s*");
		StringBuilder sbBoolean = new StringBuilder("");
		StringBuilder sbInt = new StringBuilder("");
		StringBuilder sbDouble = new StringBuilder("");
		StringBuilder sbString = new StringBuilder("");
		while (scan.hasNext()) {
			if (scan.hasNextBoolean())
				sbBoolean.append(scan.nextBoolean() + " ");
			else if (scan.hasNextInt())
				sbInt.append(scan.nextInt() + " ");
			else if (scan.hasNextDouble())
				sbDouble.append(scan.nextDouble() + " ");
			else
				sbString.append(scan.next() + " ");
		}
		System.out.println("boolean字符:" + sbBoolean);
		System.out.println("int字符:" + sbInt);
		System.out.println("double字符:" + sbDouble);
		System.out.println("文字字符:" + sbString);
	}
}