• 修饰类变量,类方法,被修饰的变量和方法被所有类实例共享,属于类,而非实例。可以通过类名调用
  • 静态代码块,静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法),不管创建多少实例,静态代码块只执行一次。
  • static inner class, 非静态内部类会维护一个指向外部类的引用,静态内部类没有,创建不依赖于外部类,不能使用外围类的任何非静态成员及方法
  • 静态导入包,import static
    public class Singleton {
        //声明为 private 避免调用默认构造方法创建对象
        private Singleton() {
        }
       // 声明为 private 表明静态内部该类只能在该 Singleton 类中被访问
        private static class SingletonHolder {
            private static final Singleton INSTANCE = new Singleton();
        }
        public static Singleton getUniqueInstance() {
            return SingletonHolder.INSTANCE;
        }
    }

how to ensure static variable thread safe