包裝類別

Java 的資料型別與例外狀況

Jim White

Java Developer

Java 的 8 種基本型別

8 個 Java 基本型別是所有資料的基礎。

Java 的資料型別與例外狀況

包裝類別

  • 每個基本型別都有對應的包裝類別
primitive Wrapper Class
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

包裝類別讓基本型別可以被當作物件使用。包裝類別是 Object 的子類別。

Java 的資料型別與例外狀況

包裝基本型別

  • 包裝類別的實例只保存一個基本型別值
    • 例如:Integer 保存一個 int 基本值

包裝物件的值是某個基本型別

Java 的資料型別與例外狀況

包裝類別細節

  • 包裝類別有額外的欄位與方法
    • 關於該型別的欄位(如最大值)
    • 可處理其包裝基本型別的方法
  • 包裝類別位於基礎語言
    • 使用時不需 import(稍後會介紹 imports)
Java 的資料型別與例外狀況

建立包裝物件

  • 將基本型別指派給對應包裝型別的變數
    • 語法:Wrapper-type variable = primitive-value;
Integer age = 12;
Double cost = 150250.55;
Float interest = 5.5f;
Character grade = 'A';
Boolean isActive = true;
  • 包裝物件也可以沒有值(null
Integer age = null;
Java 的資料型別與例外狀況

使用包裝物件

Integer age = 12;
  • 列印它們
    System.out.println(age);    // 顯示 12
    
  • 取得其基本值
    int x = age.intValue();     // 指派 x 為 12
    
  • 對它們執行其他操作
    double z = age.doubleValue();  // z 為 12.0
    String y = age.toString();  // 指派 y 為 "12"
    Integer teenAge = 16;
    int smaller = age.compareTo(teenAge);  // smaller 為 -1,因為 12 < 16
    
Java 的資料型別與例外狀況

包裝類別的靜態方法

  • 包裝類別提供靜態方法
  • 用於對應的基本型別運算
    int x = Integer.sum(8,12);  // x 為 20
    int y = Integer.remainderUnsigned(102, 10);  // y 為 2
    
  • 用於在 String 與基本型別間轉換
    int z = Integer.parseInt("123");   // z 為 123
    boolean ans = Boolean.parseBoolean("false");  // ans 為 false
    
1 See https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html for more on the Integer wrapper
Java 的資料型別與例外狀況

包裝類別的靜態欄位

包裝類別的靜態欄位範例

System.out.println(Integer.MAX_VALUE); // int 可表達的最大值
System.out.println(Integer.MIN_VALUE); // int 可表達的最小值
2147483647
-2147483648
System.out.println(Boolean.TRUE); // 對應基本值 true
System.out.println(Boolean.FALSE); // 對應基本值 false
true
false
Java 的資料型別與例外狀況

包裝類別的靜態欄位

包裝類別的靜態欄位範例

System.out.println(Character.SPACE_SEPARATOR);  // 一般空白(如 ' ')的 Unicode 分類
System.out.println(Character.LINE_SEPARATOR); // 換行(如 '\n')的 Unicode 分類
12
13
Java 的資料型別與例外狀況

有趣的包裝方法

Wrapper Method 回傳值
Boolean.logicalAnd(boolean a, boolean b) boolean
Boolean.logicalOr(boolean a, boolean b) boolean
Boolean.parseBoolean(String s) boolean
Character.getNumericValue(char ch) 該字元的 Unicode 整數值
Character.isDigit(char ch) boolean
Character.isLowerCase(char ch) boolean
Character.isWhitespace(char ch) boolean
Double.parseDouble(String s) double
Double.longValue() 將 Double 向下取整後的 Long 值
Java 的資料型別與例外狀況

為什麼要用包裝?

  • 基本型別沒有方法(只有運算子)
    • 包裝類別提供實用方法
      int score = Integer.parseInt("8");
      
  • 包裝讓基本型別可當物件使用,例如放進集合
    • 第 2 章會學集合。
Java 的資料型別與例外狀況

包裝可以為 null

  • 包裝類別允許該型別的實例或靜態變數為 null
    • 基本型別的實例或靜態變數未初始化時有預設值
int herAge; // 預設為 0
Integer hisAge = null;
if (hisAge != null) {
  // 當 hisAge 尚未設定時的處理
}
Java 的資料型別與例外狀況

一起來練習吧!

Java 的資料型別與例外狀況

Preparing Video For Download...