Java-代码块、单例设计模式

代码块

在类当中编写的一段代码,跟构造方法的功能相似,每次创建对象的时候,都会自动的调用代码块

public class Test1 {
    //用static修饰任何变量或方法:在内存都有单独的存储空间,外界可以通过类名直接去访问
    public static void main(String[] args) {
        Doo doo1=new Doo();
        System.out.println();
        Doo doo2=new Doo();
    }
}
class Doo{
    {//代码块,每次创建新的对象的时候,都会默认调用该部分
        System.out.println("代码块");
    }
}

1)企业中构造方法以及完全取代代码块
2)static修饰代码块,叫做静态代码块,不管创建多少个对象,只执行一次
企业开发中经常使用静态代码块,来执行一些初始化的操作

public class Test1 {
    public static void main(String[] args) {
        Boo boo1=new Boo();
        Boo boo2=new Boo();
        Boo boo3=new Boo();
    }
}
class Boo{
    static{
        System.out.println("静态代码块");
    }
}

单例设计模式

1.设计模式:程序员写代码总结的思想,软件开发中最常用几种代码的设计规则
2.单例设计模式:保证一个类在一个系统当中只能有一个对象,必须记住,最简单的一种设计模式
3.单例的好处:控制该类的对象的个数,只能有一个对象,减少系统压力,提高性能
4.饿汉式的单例(重点):

public class Test1 {
    public static void main(String[] args) {
        Moo moo1=Moo.getInstance();
        Moo moo2=Moo.getInstance();
//如果两个对象是同一个对象,那么用“==”返回的结果就是true
        System.out.println(moo1==moo2);//结果是true
    }
}
class Moo{
    private Moo(){}//构造方法必须私有:外界不能随便利用构造方法来创建对象
    private static Moo moo=new Moo();//利用静态属性保存该类的对象(用static修饰属性或方法,在内存只有一个对象)
    public static Moo getInstance(){ //对外提供一个静态方法来获得该对象
        return moo;
    }
}

5.懒汉式的单例(最好会写):
构造方法私有,在内存中对象不是直接创建,而是通过判断的方式,如果有该类的对象,则不创建,没有则创建一个新的对象

public class Test1 {
    public static void main(String[] args) {
//第一次执行getInstance方法,没有Noo对象,会创建一个Noo的对象返回
        Noo noo1=Noo.getInstance();
//第二次再执行getInstance方法,内存已经有Noo的对象,直接返回Noo的对象,不再创建新的 对象
        Noo noo2=Noo.getInstance();
    }
}
class Noo{
    private Noo(){}//构造方法私有
//定义对象(static)
    private static Noo noo=null;//不要先创建该类的对象,只要先定义即可
//获得该对象的方法(判断)
    public static Noo getInstance(){ //对外提供一个方法来获得该类的对象(在该方法当中要进行判断,有则不创建对象,没有则创建该类的对象)
        if(noo==null){
            noo=new Noo();
        }
        return noo;
    }
}
原文地址:https://www.cnblogs.com/lilyo/p/12792739.html