6.匿名对象:匿名对象就是对象的简化形式。Car c = new Car(); 简化为: new Car();
匿名对象就是一个没有名字的对象,创建了一个对象出来,没有赋给一个变量。
特点:(1)对象的方法或者属性只调用一次时使用匿名对象。(2)匿名对象可以作为实际参数进行传递。(3)匿名对象调用属性无意义,调用方法有意义。(4)只在堆里面开辟存储区域,匿名对象只能使用一次,使用完就被销毁了。
6.面向对象的初始化过程
Person p = new Person("zhangsan",20);
该句话都做了什么事情?
(1).因为new用到了Person.class.所以会先找到Persong.class文件并加载到内存中。
(2).执行该类中的static代码块,如果有,给Person.class类进行初始化。
(3).在堆内存中开辟空间,分配内存地址。
(4).在堆内存中建立对象的特有属性,并进行默认初始化。
(5).对属性进行显示初始化
(6).对对象进行构造代码块初始化。
(7).对对象进行对应的构造函数初始化。
(8).将内存地址赋给栈内存中的p变量。
单例设计实现方式有两种:饿汉式和懒汉式。开发一般使用饿汉式。
(1)饿汉式:类一进内存,就已经创建好了对象。先初始化对象。
class Single
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
(2)懒汉式:对象是方法被调用时,才初始化,也叫做对象的延时加载。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s == null)
{
synchronized(Single.class) //synchronized安全锁,低效。多线程。
{
if(s == null)
s = new Single();
}
}
return s;
}