黑马程序员_毕向东_Java基础视频教程学习笔记(十七)

发布时间:2014-10-23 23:26:36
来源:分享查询网

package day03; /* * 静态代码块 * 格式:static{ * 静态代码块中的执行语句 * } * * 特点:随着类的加载而执行,只执行一次 * */ class StaticCode1{ static int num=9; StaticCode1(){ System.out.println("构造"); } static { System.out.println("a"+num); } public static void show(){ System.out.println("show()......."); } } public class StaticCode { static { System.out.println("静态代码块"); } public static void main(String [] args){ //new StaticCode1(); new StaticCode1(); System.out.println("主函数的输出语句"); } static { System.out.println("静态代码块fsfs"); } } /* * Person p=new Person("zhangsan",20); * 该句话都做了什么? * 1.因为new用到了Person.class,所以会先找到Person.class文件并加载到内存中 * 2.执行类中的static代码块,如果有的话,给Person.class类进行初始化 * 3.在堆内存中开辟空间,分配内存地址 * 4.在堆内存中建立对象的特有属性,并进行默认初始化 * 5.对属性进行显示初始化 * 6.对对象进行构造代码块初始化 * 7.对对象进行对应的构造函数初始化 * 8.将内存地址赋给占内存中的p变量 */ package day03; /* * 设计模式:java中有23种设计模式 (JOF)(四人帮) * 解决某一类问题最行之有效的方法 * * 单例设计模式:解决一个类在内存中值存在一个对象。 * * 想要保证对象唯一: * 1.为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象 * 2.还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象 * 3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式 * * 这三步怎么用代码体现呢? * 1.将构造函数私有化 * 2.在类中创建一个本类对象,并对其static,用private修饰 * 3.提供一个方法获取到对象,并对其static, * * * 对于事物该怎么描述,还怎么描述 * 当需要将该事物的对象保证在内存中唯一时,就将以上三部加上即可。 * */ class Single{ private static int num; public int getNum() { return num; } public void setNum(int num) { this.num = num; } private Single(){ //1.将构造函数私有化 } private static Single s=new Single();//2.在类中创建一个本类对象 public static Single getInstance(){//3.提供一个方法获取到对象 return s; } } public class SingleDemo { public static void main(String [] args){ // Single s1=Single.getInstance(); // Single s2=Single.getInstance(); // s1.setNum(20); // System.out.println(s1.getNum()); //Single.getInstance(); /* Single s3=new Single(); Single s4=new Single(); s3.setNum(30); System.out.println(s4.getNum()); */ Student.getStudent(); } } class Student{ private static int age; private static Student s=new Student(); private Student(){} public static Student getStudent(){ return s; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } package day03; /*这个是先初始化对象 * 称为:饿汉式 * Single类一进内存,就已经创建了对象 * class Single{ * private Static Single s=new Single(); * private Single(){} * public static Single getInstance(){ * return s; * } * } */ /* * 对象是方法被调用时才初始化,也叫做对象延时加载,成为懒汉式 * Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象 */ class Single1 { private static Single1 s = null; private Single1() { } public static Single1 getInstance() { if (s == null) synchronized (Single.class) { if (s == null) { // -->A // -->B s = new Single1(); } } return s; } } //记住原则:定义单例时,建议使用饿汉式 public class SingleDemo2 { public static void main(String[] args) { } }

返回顶部
查看电脑版