JAVASE面相对象进阶之static
JavaSE 面向对象进阶之 static
一、static 的核心作用
static 是 Java 中用于修饰成员(属性/方法)的关键字,作用是让成员与类直接关联,而非依赖对象存在。
二、static 修饰属性(静态变量)
- 特点:
- 属于类本身,所有对象共享同一静态变量,存储在方法区。
- 无需创建对象,直接通过
类名.属性名
访问。 - 生命周期随类加载开始,随程序结束销毁。
- 示例:
public class Student {static int count; // 静态属性,记录学生总数String name;public Student() {count++; // 每次创建对象时,静态属性自增}
}// 调用方式
System.out.println(Student.count); // 直接通过类名访问
三、static 修饰方法(静态方法)
- 特点:
- 属于类,通过
类名.方法名()
直接调用,无需对象。 - 只能访问静态成员(静态属性/静态方法),不能访问非静态成员(因非静态成员依赖对象)。
- 静态方法中无
this
关键字(this
指向当前对象,静态方法不依赖对象)。
- 属于类,通过
- 示例:
public class MathUtils {// 静态方法:计算两数之和static int add(int a, int b) {return a + b;}
}// 调用方式
int result = MathUtils.add(5, 3); // 直接通过类名调用
四、static 代码块(静态初始化块)
- 作用:用于初始化静态属性,在类加载时自动执行,且仅执行一次。
- 特点:
- 优先于构造方法执行,且不依赖对象创建。
- 常用于加载资源(如配置文件)或初始化共享数据。
- 示例:
public class Database {static String url;static String username;static String password;// 静态代码块:初始化数据库连接参数static {url = "jdbc:mysql://localhost:3306/db";username = "root";password = "123456";System.out.println("数据库连接参数初始化完成");}
}
五、static 的注意事项
- 访问限制:
- 静态方法不能直接访问非静态成员,需通过对象访问。
- 非静态方法可以直接访问静态成员。
- 继承特性:
- 静态方法可被继承,但不能被重写(重写针对实例方法)。
- 子类可通过
父类.静态方法
调用父类静态方法。
- 与 final 结合:
static final
修饰的属性为“类常量”,必须在声明时或静态代码块中初始化,且不可修改(如public static final PI = 3.14159
)。
六、应用场景
- 工具类:如
Math
、Arrays
类中的方法多为静态,方便直接调用。 - 共享数据:记录对象数量、全局配置参数等。
- 优化性能:避免重复创建对象,直接通过类访问成员。
通过 static,Java 实现了类级别的成员管理,提升了代码的复用性和便捷性,是面向对象编程中重要的进阶概念。