• 面向对象【static关键字】


    请添加图片描述

    Java中的static关键字

    在Java中,static是一个关键字,用于定义类级别的成员,这些成员与类的实例无关。static成员属于类而不是类的实例,因此它们在类加载时被初始化,并且无需创建类的实例即可访问

    1. 静态变量

    静态变量是static关键字的一个重要用法之一。它们被用于表示类级别的数据,而不是实例级别的数据。所有类的实例共享同一个静态变量的值。

    • 静态变量的默认值规则和实例变量一样。
    • 静态变量值是所有对象共享。
    • 静态变量在本类中,可以在任意方法、代码块、构造器中直接使用。
    • 如果权限修饰符允许,在其他类中可以通过“类名.静态变量”直接访问,也可以通过
      “对象.静态变量”的方式访问(但是更推荐使用类名.静态变量的方式)。
    • 静态变量的 get/set 方法也静态的,当局部变量与静态变量重名时,使用“类名.静态
      变量”进行区分。
    public class MyClass {
        // 静态变量
        static int staticVariable = 10;
        
        // 其他成员变量和方法等
    }
    
    // 使用静态变量
    System.out.println(MyClass.staticVariable);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2. 静态方法的特点

    • 静态方法在本类的任意方法、代码块、构造器中都可以直接被调用。
    • 只要权限修饰符允许,静态方法在其他类中可以通过“类名.静态方法“的方式调用。也可以通过”对象.静态方法“的方式调用(但是更推荐使用类名.静态方法的方式)。
    • 在 static 方法内部只能访问类的 static 修饰的属性或方法,不能访问类的非 static 的结构。
    • 静态方法可以被子类继承,但不能被子类重写
    • 静态方法的调用都只看编译时类型。
    • 因为不需要实例就可以访问 static 方法,因此 static 方法内部不能有 this,也不能有super。如果有重名问题,使用“类名.”进行区别。
    public class MyClass {
        // 静态方法
        static void staticMethod() {
            System.out.println("This is a static method.");
        }
        
        // 其他成员方法等
    }
    
    // 调用静态方法
    MyClass.staticMethod();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3. 静态块

    静态块是用static关键字定义的一个代码块,在类加载时执行。通常用于执行静态变量的初始化或执行一些静态的初始化操作

    public class MyClass {
        // 静态块
        static {
            System.out.println("Static block executed.");
        }
        
        // 其他成员变量和方法等
    }
    
    // 类加载时,静态块被执行
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4. 静态导入

    静态导入是使用static关键字导入类的静态成员,使得可以直接使用静态成员而无需使用类名。

    import static java.lang.Math.*;
    
    public class MyMathClass {
        public static void main(String[] args) {
            // 使用静态导入的Math类中的静态方法
            double result = sqrt(25.0);
            System.out.println(result);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5. 单例模式中的应用

    static关键字在单例模式的实现中也经常发挥重要作用,确保只有一个类的实例存在。

    public class Singleton {
        // 声明一个静态变量来保存实例
        private static Singleton instance;
    
        // 私有化构造方法,防止外部实例化
        private Singleton() {}
    
        // 提供一个公共的方法获取实例
        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    Spring MVC
    关于跨境电商货源——扬帆牧哲
    MySQL一条SQL语句的执行过程
    集合工具类---Collections
    一文看懂页面置换算法
    SpringMVC拦截器
    MIT课程分布式系统学习07——Fault Tolerance raft2
    7.6中间件
    相机标定内外参求解
    FPGA 学习笔记:Vivado 配置IO引脚约束
  • 原文地址:https://blog.csdn.net/gentleman_hua/article/details/136661636