前言
電腦內的資料是存在於記憶體中的抽象物體,變數是資料的標籤。電腦程式透過變數操作資料。本文介紹 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
會造成程式錯誤。