2026/4/18 15:32:56
网站建设
项目流程
深圳企业网站改版,世界建设企业网站,网络工具,推广软件是什么工作一、static 是什么#xff1f;static#xff08;静态#xff09;是 Java 中的一个关键字#xff0c;用来修饰变量、方法、代码块、内部类#xff0c;核心作用是#xff1a;被 static 修饰的成员属于「类」本身#xff0c;而不是类的某个实例#xff08;对象#xff09…一、static是什么static静态是 Java 中的一个关键字用来修饰变量、方法、代码块、内部类核心作用是被 static 修饰的成员属于「类」本身而不是类的某个实例对象。可以用一个通俗的比喻理解普通成员非 static好比每个学生的「个人笔记本」每个学生对象都有自己的一本互不干扰static 成员好比教室的「公共白板」所有学生对象共用这一个改了之后所有人看到的都是修改后的结果。二、static的核心用法附代码示例1. 静态变量类变量定义属于类所有对象共享内存中只加载一次类加载时初始化访问可以直接通过「类名。变量名」访问也可以通过对象访问不推荐。java运行public class Student { // 非静态变量实例变量每个学生独有 String name; // 静态变量类变量所有学生共享的学校名称 static String school 北京大学; public static void main(String[] args) { // 1. 直接通过类名访问静态变量推荐 System.out.println(Student.school); // 输出北京大学 // 2. 创建对象访问不推荐易混淆 Student s1 new Student(); s1.name 张三; System.out.println(s1.school); // 输出北京大学 // 3. 修改静态变量所有对象都受影响 Student.school 清华大学; Student s2 new Student(); s2.name 李四; System.out.println(s1.school); // 输出清华大学 System.out.println(s2.school); // 输出清华大学 } }2. 静态方法类方法定义属于类无需创建对象即可调用注意静态方法中不能直接访问非静态成员因为非静态成员属于对象静态方法执行时可能还没有对象但可以访问静态成员。java运行public class MathUtil { // 静态方法计算两数之和工具类常用静态方法 public static int add(int a, int b) { // 静态方法中可以访问静态变量 staticVar 10; return a b; } // 静态变量 static int staticVar; // 非静态变量 int nonStaticVar; public static void main(String[] args) { // 直接通过类名调用静态方法 int sum MathUtil.add(3, 5); System.out.println(sum); // 输出8 // 错误示例静态方法中不能直接访问非静态变量 // System.out.println(nonStaticVar); } }3. 静态代码块定义类加载时执行且只执行一次常用于初始化静态变量、加载配置文件等执行顺序静态代码块 构造方法创建对象时执行。java运行public class TestStaticBlock { // 静态变量 static int num; // 静态代码块 static { num 100; System.out.println(静态代码块执行num num); } // 构造方法 public TestStaticBlock() { System.out.println(构造方法执行); } public static void main(String[] args) { // 创建第一个对象静态代码块先执行再执行构造方法 TestStaticBlock t1 new TestStaticBlock(); // 创建第二个对象静态代码块不再执行只执行构造方法 TestStaticBlock t2 new TestStaticBlock(); } }输出结果plaintext静态代码块执行num100 构造方法执行 构造方法执行三、常见使用场景工具类如java.lang.MathMath.random()、Math.max()等都是静态方法无需创建对象直接调用共享数据如统计某个类的对象创建个数用静态变量计数初始化资源如加载数据库连接配置、读取配置文件静态代码块。总结static修饰的成员属于类而非对象内存中仅一份类加载时初始化静态方法不能直接访问非静态成员非静态方法可以访问所有成员静态代码块只执行一次常用于静态资源初始化工具类是 static 最典型的应用场景。