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(); // 第一次调用时会触发静态代码块} }
-