1.1 static關鍵字
-
static關鍵字 :
-
靜態的意思 , 可以修飾變量 , 也可以修飾方法 , 被static修飾的成員 , 我們叫做靜態成員
-
-
static特點 :
-
靜態成員被所類的所有對象共享
-
隨著類的加載而加載 , 優先于對象存在
-
可以通過對象調用 , 也可以通過類名調用 , 建議使用類名
-
1. 靜態變量(Static Variables):
靜態變量也稱為類變量,它們屬于類而不是類的特定實例。所有該類的實例共享相同的靜態變量的值。靜態變量在內存中只有一個副本,無論類實例化多少次,它們都指向相同的內存空間。
class Example {static int count = 0; // 靜態變量Example() {count++; // 每創建一個實例,count 加一}
}
2. 靜態方法(Static Methods):
靜態方法屬于類,不依賴于類的實例而直接通過類名調用。靜態方法不能直接訪問類的非靜態成員,因為它們在類加載時就已經存在,而非靜態成員需要在對象實例化后才能訪問。
class Example {static void staticMethod() {System.out.println("This is a static method.");}
}
3. 靜態代碼塊(Static Initialization Block):
靜態代碼塊用于初始化類的靜態變量,只在類加載時執行一次,比如靜態變量的初始化或者靜態方法的調用。
class Example {static {// 靜態代碼塊System.out.println("Static block initialized.");}
}
4. 靜態內部類(Static Inner Class):
靜態內部類是聲明為靜態的內部類,不依賴于外部類的實例而可以直接通過類名訪問。靜態內部類不能訪問外部類的非靜態成員,只能訪問靜態成員。
class Outer {static class Inner {void display() {System.out.println("Static inner class.");}}
}
2-final關鍵字
-
final關鍵字 : 翻譯中文代表最終的意思 , 是java的一個關鍵字 也是一個修飾符 , 可以修飾類 , 可以修飾方法 , 也可以修飾變量
-
final關鍵字修飾的特點
-
final修飾的類 : 不能被繼承 , 沒有子類(太監類)
-
fina修飾的方法 : 不能被重寫
-
final修飾的變量
-
基本數據類型 : 值不能改變
-
引用數據類型 : 地址不可發生改變 , 對象的屬性可改變
-
注意 :
-
被final修飾的變量 , 我們叫做自定義常量 , 命名規范 : 每個字母需要大寫 , 多個單詞之間用下劃線分割
-
final修飾成員變量需要注意初始化時機的問題 , 1) 直接賦值 , 2) 在構造方法執行完畢前賦值
-
-
-
1.?final
?變量:
當應用于變量時,final
表示該變量只能被賦值一次。一旦賦值后,其值就不能再改變。final
變量必須在聲明時或者在構造方法中進行初始化。
class Example {final int constantValue = 10; // 聲明時初始化final double PI;Example() {PI = 3.14; // 在構造方法中初始化}void method() {final int localVar = 5; // 局部變量也可以聲明為final// localVar = 10; // 編譯錯誤,final變量無法重新賦值}
}
2.?final
?方法:
當應用于方法時,final
表示方法不能被子類重寫(override)。這種約束有助于確保方法的行為在繼承層次結構中保持一致性和完整性。
class Parent {final void finalMethod() {// 這個方法不能被子類重寫}
}class Child extends Parent {// 編譯錯誤,無法重寫final方法// void finalMethod() { }
}
3.?final
?類:
當應用于類時,final
表示該類不能被繼承。這種設計主要用于確保類的完整性和安全性,防止子類對其進行修改或擴展。
final class FinalClass {// 這個類不能被繼承
}// 編譯錯誤,無法從final類派生子類
// class ChildClass extends FinalClass { }