public static 完备解析

发布时间:2023-05-19

一、概述

public static 是 Java 中的两个访问修饰符。public 指明该变量、方法或类可以被其他任何类访问,static 则指明它们属于类,而不是对象,可以在不创建对象实例的情况下使用。 在访问修饰符中,publicstatic 也可以组合使用,为公共的静态变量或静态方法,可以直接使用类名访问。这使得使用静态成员变量和方法变得方便和高效。

二、public static 关键字的作用

  1. public static 修饰类:一个 public 的类可被任何其他类访问,而一个 static 的类只有一份,无需创建对象
public static class MyClass {
    ...
}
  1. public static 修饰属性(变量):公共静态属性可以被访问,也可以写入,而不必通过类的实例
public static int varible = 0;
  1. public static 修饰方法:公共静态方法可以直接简单地通过类名调用,不需要实例化类对象
public static void myMethod() {
    ...
}

三、public static 和单例模式

单例模式是一种创建型设计模式,确保一个类仅有一个实例,并提供访问该实例的全局点。 public static 可以与单例模式结合使用,这样就可以在程序的任意地方访问单例对象。

public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return instance;
    }
    ...
}

四、public static 和 Java 多线程

多线程应用程序可能会涉及到并发处理,这时候 public static 就可以提供公共的共享内存。 在多线程应用程序中,每个线程使用该变量时,它们都在共享同一个命名空间。Java 虚拟机基于 public static 关键字提供了一种都可以使用的单例实现方法。

public class MyThread implements Runnable {
    public static int num;
    public void run() {
        num++;
    }
}

五、public staticfinal 关键字

public static 关键字可以与 final 关键字组成公共的常量。 常量是不能改变的值,如果值在程序中重复使用,则应该在程序的起始位置定义它,并对其进行命名。

public static final int MAX_SIZE = 100;

六、public static 和接口

public static 可以与接口一起使用,接口中的变量默认是 public static final 类型。

public interface MyInterface {
    public static final int num = 0;
    ...
}

七、总结

public static 是 Java 中两个常用的访问修饰符。其用法也非常广泛,可以用于类、属性、方法、常量、接口等等。经过合理使用,public static 关键字可以使代码更加简洁、高效、易读。