Day06--面向对象

2019-06-17  本文已影响0人  pure_joy
static(静态)关键字
主函数(main函数)
静态代码块
static
{
       静态代码块中的执行语句。
}
对象的初始化过程

Person p = new Person("zhangsan",20);
该句话都做了什么事情?
1、因为new用到了Person.class。所以会先找到Person.class文件并加载到内存中。
2、执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3、在堆内存中开辟空间,分配内存地址。
4、在堆内存中建立对象的特有属性,并进行默认初始化。
5、对属性进行显示初始化。
6、对对象进行构造代码块初始化。
7、对对象进行对应的构造函数初始化。
8、将内存地址赋给栈内存中的p变量。

设计模式
/*
这个是先初始化对象。称为:饿汉式。
Single类一进内存,就已经创建好了对象。
*/
class Single
{
    private Single(){}
    
    private static Single s = new Single();

    public static Single getInstance()
    {
        return s;
    }   
}

/*
对象是方法被调用时,才初始化,也叫做对象的延时加载。称为:懒汉式。
Single类进内存时,对象还没有存在,只有调用了getInstance方法时,才建立对象。
*/
class Single
{
    private static Single s = null;

    private Single(){}

    public static Single getInstance()
    {
        if(s==null)
        {
            synchronized(Single.class)
            {
                if(s==null) s = new Single();
            }
        }
        return s;
    }
}

//记住原则:定义单例,建议使用饿汉式。

对于事物该怎么描述,还怎么描述。当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。

上一篇 下一篇

猜你喜欢

热点阅读