說明
電腦程式時常用來操作資料。程式語言會界定程式可操作的資料型態。本文說明 Java 支援的資料型態。
基礎型態 (Primitive Type)
Java 的基礎型態並非物件 (object),而是值 (raw value)。以下是 Java 支援的基礎型態:
- 布林 (boolean)
- 字元 (Character)
- 整數 (integer)
- 浮點數 (floating-point number)
Java 強調物件導向範式,卻沒有像 Ruby 般,把所有的資料型態視為物件,而保留了基礎型態的概念。這應該是為了讓 C、C++ 程式設計者易於轉換語言。
參考型態 (Reference Type)
Java 的參考型態基於 (class),參考型態儲存的實體是物件。以下是 Java 支援的參考型態:
- 陣列 (array)
- 類別 (class)
- 介面 (interface)
布林 (Boolean)
boolean
型態用來表示數學上的布林數,其值有 true
和 false
兩種。
字元 (Character)
char
型態用來表示單一字元。Java 的 char
型態為無號字元型態,儲存 16-bit Unicode 字元。
整數 (Integer)
Java 支援以下的整數型態:
byte
:8 位元short
:16 位元int
:32 位元long
:64 位元
Java 的整數型態的位元數是固定的。不會像 C 和 C++ 的整數型態,在不同平台寬度相異。
注意 Java 僅有帶號整數 (signed integer),沒有無號整數 (unsigned integer)。這點和 C 及 C++ 相異。
以下 Java 程式求取各個整數型態的極值:
public class MainProgram
{
public static void main (String[] args)
{
System.out.printf("byte goes from %d to %d%n",
Byte.MIN_VALUE, Byte.MAX_VALUE);
System.out.printf("short goes from %d to %d%n",
Short.MIN_VALUE, Short.MAX_VALUE);
System.out.printf("int goes from %d to %d%n",
Integer.MIN_VALUE, Integer.MAX_VALUE);
System.out.printf("long goes from %d to %d%n",
Long.MIN_VALUE, Long.MAX_VALUE);
}
}
這裡用到了整數基本型態相對應的物件型態。詳見後文。
浮點數 (Floating-Point Number)
Java 支援以下的浮點數型態:
float
:32 位元double
:64 位元
以下 Java 求取各個浮點數型態的極值:
public class MainProgram
{
public static void main (String[] args)
{
System.out.printf("float goes from %e to %e%n",
Float.MIN_VALUE, Float.MAX_VALUE);
System.out.printf("double goes from %e to %e%n",
Double.MIN_VALUE, Double.MAX_VALUE);
}
}
注意這裡的極小值是指最小正數。由於極值難以表示,故此處以科學記號來印出浮點數。
陣列 (Array)
Java 的陣列在語法上類似於 C 陣列。但 Java 陣列是物件,有儲存陣列長度的資訊。
除了陣列外,Java 還有 ArrayList
類別。其實兩者在功能上是重疊的。這樣的現象是因為 Java 未如 Ruby 般徹底地使用物件導向範式而造成的現象。詳見後文。
類別 (Class)
類別是用來宣告新的資料型態,也是建立物件的藍圖。限於篇幅,此處不詳談類別。
介面 (Interface)
介面是為了解決多重繼承而設計的語法。限於篇幅,此處不細談。詳見後文的說明。
將基礎型態資料轉為物件
Java 刻意區分基礎型態和參考型態,但有些場合無法使用基礎型態,故 Java 提供將基礎型態資料轉成物件的類別。根據 Java 的基礎型態,有以下相對應的類別:
例如,以下敘述可從整數 9999
得到相對應的 Integer
型態物件 i
:
Integer i = Integer.valueOf(9999);