大多數程序設計語言都提供了“作用域”(Scope)的概念。對於在作用域裡定義的名字,作用域同時決定了它的“可見性”以及“存在時間”。在C,C++和Java裡,作用域是由花括號的位置決定的。參考下面這個例子:
{ int x = 12; /* only x available */ { int q = 96; /* both x & q available */ } /* only x available */ /* q “out of scope” */ }
作為在作用域裡定義的一個變量,它只有在那個作用域結束之前才可使用。
在上面的例子中,縮進排版使Java代碼更易辨讀。由於Java是一種形式自由的語言,所以額外的空格、制表位以及回車都不會對結果程序造成影響。
注意盡管在C和C++裡是合法的,但在Java裡不能象下面這樣書寫代碼:
{ int x = 12; { int x = 96; /* illegal */ } }
編譯器會認為變量x已被定義。所以C和C++能將一個變量“隱藏”在一個更大的作用域裡。但這種做法在Java裡是不允許的,因為Java的設計者認為這樣做使程序產生了混淆。