大括弧括起來的就是代碼塊 有名字的代碼塊——if-else 代碼塊、for 迴圈代碼塊、main方法代碼塊 代碼塊也叫體,例如 for 迴圈體、main方法體 代碼塊可以嵌套 變數的作用域 代碼塊里可以創建和使用變數 代碼塊里可以使用外層代碼塊的變數 但是在外層代碼塊里不可以使用內層代碼塊里的變數。 ...
大括弧括起來的就是代碼塊
- 有名字的代碼塊——if-else 代碼塊、for 迴圈代碼塊、main方法代碼塊
- 代碼塊也叫體,例如 for 迴圈體、main方法體
- 代碼塊可以嵌套
變數的作用域
- 代碼塊里可以創建和使用變數
- 代碼塊里可以使用外層代碼塊的變數
- 但是在外層代碼塊里不可以使用內層代碼塊里的變數。(是否可以使用變數,也稱為變數在某個代碼塊的可見性。也就是說,外層代碼塊創建的變數對內層代碼塊可見,內層代碼塊中創建的變數對外層代碼塊不可見。)
- 內層命名空間(或者說是作用域)不可以重覆定義外層代碼塊的變數,但是可以使用外層代碼塊的變數
- 代碼塊無論嵌套多少層,都遵循以上變數的可見性的規則。
作用域和命名空間
- 同一個命名空間中的變數不可以重名
- 為了避免變數名衝突,所以必須有命名空間
public class CodeBlock { public static void main(String[] args) { // 內部代碼塊里的作用域(命名空間)是可以使用到外部代碼塊中的變數的。 // 反過來,外部無法使用到代碼塊作用域中的變數。 // 代碼塊的作用域隨著代碼塊的執行的結束而結束。 int outer = 100; { int inner = 10; System.out.println("outer的值是" + outer + "。 inner的值是" + inner); } // 代碼塊可以多層嵌套。作用域的生命周期規則相同。 int a1 = 1; { int a2 = a1 + 1; { int a3 = a2 + 1; System.out.println("a3=" + a3); } { int a3 = a2 + 10; System.out.println("a3=" + a3); } System.out.println("a2=" + a2); } } }