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

Java 基礎:成員變數與區域變數的差異、初始化規則與同名遮蔽

     編輯:Java 綜合教學

Java 基礎:成員變數與區域變數完整解析

一、區域變數

  • 定義位置:方法、建構器、程式碼區塊內部
  • 作用域:從宣告處開始,到所在區塊結束
  • 初始化規則:必須顯式初始化,否則編譯錯誤
  • 記憶體:儲存在 Stack(棧)中,方法結束自動釋放
public void test() {
    int a; // 編譯錯誤:variable a might not have been initialized
    int b = 10; // 正確
    System.out.println(b);
}

二、成員變數

  • 定義位置:類別內部、方法外部
  • 作用域:整個類別內部可見(受存取修飾詞限制)
  • 初始化規則:系統自動賦予預設值,無需手動初始化
  • 記憶體:儲存在 Heap(堆)中,隨物件生命週期

預設值對照表

資料類型預設值
byte / short / int / long0
float / double0.0
char'\u0000' (空字元)
booleanfalse
引用類型null
public class Demo {
    int num; // 自動初始化為 0
    String str; // 自動初始化為 null
    public void print() {
        System.out.println(num + ", " + str); // 輸出:0, null
    }
}

特殊情況:final 成員變數

被 final 修飾的成員變數必須顯式初始化(宣告時、建構器或初始化區塊),否則編譯錯誤。

三、同名遮蔽

當區域變數與成員變數同名時,方法內直接使用變數名訪問的是區域變數。若需訪問成員變數,使用 this.變數名。

public class Test {
    int x = 10; // 成員變數
    public void method() {
        int x = 20; // 區域變數
        System.out.println(x);      // 輸出 20
        System.out.println(this.x); // 輸出 10
    }
}

四、快速比較總結

特性區域變數成員變數
定義位置方法/區塊內類別內、方法外
作用域區塊內整個類別
預設值無(必須初始化)有(見上表)
記憶體StackHeap
生命週期方法執行期間物件存在期間
存取修飾詞不可使用可使用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved