一:new初始化过程
Person p = new Person() 的执行过程
1.加载Person,class文件到内存中;
2.执行类中的静态的初始化
3.堆中开辟空间,分配地址;
4.建立属性,属性默认初始化;
5.对属性显示初始化(及刚开始定义属性时赋值)
6.对对象进行构造代码初始化;
7.对对象进行函数初始化;
8.将地址赋给栈中内存中的变量;
二,设计模式——单例设计模式
1.意义:解决一个类只能实例化一个对象‘
2.,过程:(1)先控制其他程序建立对象构造函数加private关键字
(2)还要建立一个对象,只有在本类中建立对象、
(3)提供访问方法。
3.提供两种解决方法(1)饿汉式(工程中常用方法)(2)懒汉式(工程中不用,面试常考)
/*
饿汉式
特点:安全,简单。先初始化对象;
*/
class Single
{
private Single(){}
private static Single s =new Single();
public static Single getInstance()
{
return s;
}
}
/*
懒汉式
特点:不安全,对象时方法调用时初始化,也叫延时加载。
*/
class Single
{
private Single(){}
private static Single s = null;
public static Single getINstance()
{
if(s == null)
s = new Single();
return s;
}
}
/*
懒汉式——安全解决方式一:函数加锁
特点:效率低(每次访问进行判断)
*/
class Single
{
private Single(){}
private static Single s = null;
public static synchronized Single getINstance()
{
if(s == null)
s = new Single();
return s;
}
}
/*
懒汉式——安全解决方式二:过程加锁
特点:只判断一次
*/
class Single
{
private Single(){}
private static Single s = null;
public static Single getINstance()
{
if(s == null)
{
synchronized(single.class)
{
if(a == null)
s = new Single();
}
}
return s;
}
}