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; } }