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

Java 基礎知識點總結:局部變量、final 語義與初始化規則

     編輯:Java 相關知識

1. 局部變量 vs 成員變量初始化規則

  • 局部變量:無默認初始化,必須顯式賦值後才能使用,否則編譯錯誤。
    public void method() {
        String s; // 編譯錯誤:可能未賦值
        System.out.println(s);
    }
  • 成員變量(實例/靜態變量):自動獲得默認值(null/0/false)。
    class Demo { String s; // 自動初始化為 null
        public static void main(String[] args) { System.out.println(new Demo().s); // 輸出 null }}

2. 局部變量修飾符限制

  • 不能使用 public/protected/private 訪問修飾符(隱式 default)。
  • 可使用 final 修飾局部變量(常量或匿名內部類捕獲)。

3. final 修飾基本類型 vs 引用類型局部變量

基本類型:值不可變

public int addOne(final int x) {
    return ++x; // 編譯錯誤:無法對 final 基本類型賦值
}

引用類型:引用不可變,對象內容可變

public void modify(final User user) {
    user.setName("NewName"); // 合法:修改對象屬性
    user = new User();       // 編譯錯誤:嘗試改變引用指向
}

4. final 成員變量初始化強制要求

final 修飾的實例變量(非 static)不會獲得默認值,必須在聲明時、實例初始化塊或構造器中顯式賦值,且構造器執行完前必須完成賦值。

class Demo {
    final int i = 0; // 聲明時賦值
    // 或
    final int j;
    { j = 10; } // 實例初始化塊
    // 或
    final int k;
    public Demo() { k = 20; } // 構造器賦值
}

總結表

變量類型默認值final 行為
局部基本類型無值不可變
局部引用類型無引用不可變,對象可變
final 實例變量無構造器結束前必須顯式初始化
非 final 實例變量有(null/0/false)可選初始化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved