位元詩人 [Java] 程式設計教學:資料型態 (Data Type)

Java資料型態
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

說明

電腦程式時常用來操作資料。程式語言會界定程式可操作的資料型態。本文說明 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 型態用來表示數學上的布林數,其值有 truefalse 兩種。

字元 (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);
關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。