首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 教學(七):類別中的資料成員與區域變數

     編輯:Java 相關知識

資料分類:依宣告位置區分

類別宣告位置作用域生命週期預設值
資料成員 (Field)類別主體內、方法外整個類別(視權限可跨類)隨物件建立/銷毀;static 隨類別載入/卸載有:0、false、null 等
區域變數 (Local Variable)方法/建構子/區塊內僅限該方法/區塊內方法執行時建立,結束即回收無(必須显式初始化)

程式碼範例

package com.csst.test;

public class TestData {
    // 1. 資料成員
    private int x;
    private int y;

    public void test(int y) { // 參數 y 也是區域變數
        // 2. 區域變數
        int z; // 未初始化,直接用會編譯錯誤

        this.y = y; // this.y 為資料成員,y 為參數

        System.out.println(x); // 輸出 0 (int 預設值)
        // System.out.println(z); // 編譯錯誤:variable z might not have been initialized
    }
}

七大差異總結

  1. 存取修飾詞:資料成員可用 public/protected/private;區域變數不可。
  2. static 修飾詞:資料成員可用;區域變數不可(Java 無靜態區域變數)。
  3. 資料型別:兩者皆支援所有型別(基本型別、參考型別)。
  4. 預設值:資料成員有預設值;區域變數必須手動初始化,否則編譯失敗。
  5. 作用域:資料成員屬於類別層級;區域變數侷限於方法/區塊。
  6. 生命週期:資料成員隨物件/類別;區域變數隨方法呼叫/返回。
  7. 同名遮蔽:區域變數/參數與資料成員同名時,直接寫名稱指向區域變數,需用 this.field 存取資料成員。

記憶體圖示

Stack (執行緒私有)          Heap (共享)
┌─────────────────────┐     ┌─────────────────────┐
│ main()              │     │ TestData object     │
│  - args             │     │  x = 0 (field)      │
│ test()              │     │  y = 0 (field)      │
│  - y (parameter)    │     └─────────────────────┘
│  - z (local var)    │
└─────────────────────┘

常見錯誤與最佳實踐

錯誤正確做法
區域變數未初始化即使用宣告時賦值:int z = 0;
忘記 this. 導致邏輯錯誤養成 this.field 區分資料成員
濫用 static 造成共享狀態 Bug非必要勿用 static,優先實例欄位
公開資料成員破壞封裝私有欄位 + public getter/setter

結語

理解「資料成員 vs 區域變數」是掌握 Java 物件導向基石。牢記:位置決定作用域,初始化規則不同,同名用 this 區分,即可避開 90% 的新手陷阱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved