美思 [Java] 程式設計教學:變數 (Variable)

Java變數
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

電腦內的資料是存在於記憶體中的抽象物體,變數是資料的標籤。電腦程式透過變數操作資料。本文介紹 Java 的變數。

宣告變數

標註變數的資料型態

傳統上,宣告變數時會一併標註其資料型態。如以下敘述:

String greeting = "Hello World";

使用型態推論 (Type Inference)

有時候,變數的資料型態顯而易見或不是程式碼的重點。在 JDK 10 後,引入 var 來簡化變數宣告。這時不需標註資料型態:

var user = "Michelle";

使用 var 宣告變數時,會自動從資料推斷變數的資料型態。

命名識別字的規則

識別字可能是變數、屬性、函式、類別等。以下是命名識別字的規則:

  • 首字為字母、_ (底線)、$ (錢字號)
  • 次字為字母、_$、數字
  • 不可以是保留字、布林數、null

依照 Java 社群的慣例,在命名 Java 識別字時,不會使用錢字號;而底線僅用於全大寫的識別字。

除類別使用大駝峰式命名法 (PascalCase)、常數使用全大寫命名法 (ALL_CAPS_CASE) 外,其餘使用小駝峰式命名法 (camelCase)。

保留字 (Keyword)

保留字在程式碼中已有特定意義意義,不能當成識別字。Java 官網提供一份保留字的清單

abstract   continue   for          new         switch
assert     default    if           package     synchronized
boolean    do         goto         private     this
break      double     implements   protected   throw
byte       else       import       public      throws
case       enum       instanceof   return      transient
catch      extends    int          short       try
char       final      interface    static      void
class      finally    long         strictfp    volatile
const      float      native       super       while
_ (underscore)

以下是情境保留字。最好也不要當成識別字:

exports      opens      requires     uses
module       permits    sealed       var
non-sealed   provides   to           with
open         record     transitive   yield

變數的可視域 (Scope)

可視域決定變數的有效範圍。Java 變數的生命週期 (可視域) 是基於區塊 (block)。以下是一個無法編譯的反例:

public class MainProgram
{
    public static void main (String[] args)
    {
        /* An anonymous block. */
        {
            var i = 9999;
        }

        /* Oops! */
        System.out.println(i);
    }
}

該程式先在匿名區塊內建立變數 i,在區塊範圍外 i 已經消失了。試圖印出 i 會造成程式錯誤。

關於作者

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

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