先讲讲static关键字
- static 修饰的属性和类相关,即使有多个该类的对象实例,静态成员变量也只有一个,JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配,并存储在元空间中。
- static 修饰的方法和类相关,即使有多个该类的对象实例,静态方法也只有一个,静态成员方法不需要创建对象就可以被调用。
再说单例模式
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}