类的初始化顺序
静态变量,静态块,实例变量,实例块,构造方法
class Test{
public Test(){
System.out.println("实例变量");
}
}
class TestStatic{
public TestStatic(){
System.out.println("静态变量");
}
}
public class People {
private Test name = new Test();
private static TestStatic a = new TestStatic();
static {
System.out.println("静态块");//静态块(不能提供this引用)初始化静态变量
}
{
System.out.println("实例块");//实例块初始化实例变量
}
public People(String name,int age){
System.out.println("构造方法");//构造方法(可以提供this引用)里静态变量和实例变量都可初始化
}
}
public class TestDemo {
public static void main(String[] args) {
People p = new People("zs",10);
}
}
单例模式
单例模式,顾名思义就是只有一个实例,并且它自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
- 懒汉式
//单例模式 - 懒汉模式 (慢加载单例模式)
public class Singleton {
private static People people;//方法区
private Singleton(){
}
public static People getInstance(){
if(people == null){
people = new People();
}
return people;
}
}
- 饿汉式
//饿汉单例模式 快加载
public class Singleton {
private static People people = new People();//方法区
private Singleton(){
}
public static People getInstance(){
return people;
}
}
- 双检锁
- 静态内部类
- 枚举