本帖最后由 黑色救护车 于 2015-3-27 09:09 编辑
不会的,你看毕老师画的那个图了吗?每次调用getInstance()方法的时候,其实都是将堆内存中同一个对象的内存地址赋给不同的栈内存中变量而已,因此所有引用都指向堆内存中同一个对象。new Single对象的过程是在Single类当中完成的,由于Single类的构造方法是私有,其他程序没有办法new出Single对象。其他程序要得到Single对象,只能通过getInstance()方法,而getInstance()方法返回的都是Single类中new出来的Single对象,这是唯一的。老师没有去new对象喔,老师只是在另一个类中调用Single类的方法,而private static Single s = new Single();这句话只会执行一次喔!
如上图,比如再来一个Single s1 = Single.getInstance();
1)在栈内存开一个空间储存s1;
2)getInstance()方法返回一个Single对象s,将Single对象的内存地址赋给s1;
3)即s1同样也指向Single对象
|