您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页课题_java -- 静态代码块及单例设计模式

课题_java -- 静态代码块及单例设计模式

来源:爱go旅游网
java -- 静态代码块及单例设计模式

静态代码块 1. 静态代码块 (1).格式: static {

执行语句; }

(2).特点:随着类的加载而执行,只执行一次,并优先于主函数执行 用于给类进行初始化 实例:

class StaticCode { static {

System.out.print(\" a \"); } }

class StaticCodeDemo { static {

System.out.print(\" b \"); //随着类的加载,static代码块先于主函数执行 }

public static void main(String[] args) {

new StaticCode(); //static代码块只执行一次 new StaticCode(); System.out.print(\" over \"); } static {

System.out.print(\" c \"); //随着类的加载,static代码块先于主函数执行 } }

//运行结果: b c a over

2. 一个对象初始化的流程: (1).将相应的class文件加载进内存

(2).执行类中的static代码块对类进行初始化 (3).在堆内存中开辟一块空间,并分配内存地址

(4).在堆内存中建立对象的特有属性,并进行默认初始化 (5).对属性进行显示初始化 (6).对对象进行构造代码块初始化 (7).对对象进行对应的构造函数初始化 (8).将内存地址赋给栈内存中的变量

单例设计模式

1.设计模式:解决某一类问题最行之有效的方法 (1).java中有23种设计模式

(2).单例设计模式:解决一个类在内存中只存在一个对象 (3).步骤:

·将构造函数私有化

·在类中创建一个私有并静态的本类对象 ·仅对外提供一个获取该对象的方法 (4).实例:

class Single {

private int num;

public void setNum(int num) {

this.num = num; }

public int getNum() {

return num; }

private Single(){} //私有化构造函数

private static Single s = new Single(); //创建本类对象 public static Single getInstance() //对外提供获取方法 {

return s; } }

class SingleDemo {

public static void main(String[] args) {

Single s1 = Single.getInstance(); //只能有类名访问,而不能再建立新对象 Single s2 = Single.getInstance(); //s1和s2指向同一个对象 s1.setNum(30);

System.out.println(\"s2 = \"+s2.getNum()); } }

运行结果:s2 = 30

(5).懒汉式和饿汉式

·饿汉式--先初始化对象(建议使用) class Single {

private Single(){}

private static final Single s = new Single(); // final 可以不写 public static Single getInstance() {

return s; } }

·懒汉式--对象调用时才初始化(对象的延时加载) class Single2 {

private Single(){}

private static Single2 s = null; public static Single2 getInstance() {

if (s == null) {

synchronized (Single.class) {

if (s == null)

s = new Single2(); } } return s; } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务