11. 為什么要用static關鍵字
static:
-
通常來說:在new一個對象的時候,數據存儲空間才會被分配,方法才能被外界使用。但是有時只想單獨分配一個存儲空間,不考慮需要創建對象或不創建對象,在沒有對象的情況下也想調用方法。static關鍵字就滿足了我們的需求
-
共享數據,節省內存
-
當多個對象需要共享一份數據時,可以避免為每個對象單獨開辟一個數據存儲空間,節省內存
-
class Employee {private static int count = 0; // 所有 Employee 實例共享這個變量private String name;public Employee(String name) {this.name = name;count++; // 每創建一個實例,count 自增}public static int getCount() {return count;} }public class Main {public static void main(String[] args) {Employee e1 = new Employee("Alice");Employee e2 = new Employee("Bob");System.out.println("當前員工數: " + Employee.getCount()); // 輸出 2} }
-
-
-
不需要實例化,可以直接使用
-
class MathUtils {public static int add(int a, int b) {return a + b;} }public class Main {public static void main(String[] args) {int result = MathUtils.add(3, 5); // 直接通過類名調用靜態方法System.out.println("3 + 5 = " + result); // 輸出 8} }
-
-
資源初始化 (類加載時執行)
-
class Database {private static Connection conn;static {try {conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");System.out.println("數據庫連接已建立");} catch (SQLException e) {e.printStackTrace();}}public static Connection getConnection() {return conn;} }public class Main {public static void main(String[] args) {Connection conn = Database.getConnection(); // 第一次調用時會觸發靜態代碼塊} }
-