其实刚学习java对方法被调用来调用去的思想有些模糊,调用一多了,就有点迷糊了,所以看完视频后,今天准备对方法被调用的方式做一些解释,可能话语没有那么专业化,但是还是为了学习。希望各位大侠多多指点。(结合代码和图看)
class Single
{
private Single(){}
private static Single s = new Single();
public static Single getInstance()
{
return s;
}
}
class SheJiMoShi
{
public static void main(String[] args)
{
Single ss = Single.getInstance();
}
/**
方法被调用有两种方式:对象和类名;
在没有对象条件下,如果用类名调用,则方法必须为静态,静态方法再访问类中的成员;
类中的成员变量一般进行私有化(通过方法访问);
如果在类中只有1个对象,则只需要用get方法就可以了,不需要再去用set方法;
上面代码中:Single ss = Single.getInstance();这是静态方法调用,类名调用getInstance()静态方法,它返回的是一个类类型ss的引用
在上面代码中程序执行的顺序是先读取主函数中的代码:Single ss = Single.getInstance();,他们的含义是:
(1)先加载Single类,Single类一加载后,在方法区只中就有了Single类的方法空间(见图),然后有一个静态的S变量,还有一个getSingle方法,当调用了方法后,就返回了一个S,S有一个值就是 new Single(),把new Single()赋给了变量S,而这个new Single()它在堆中是一个内存地址值,它是一个对象,即它必须在对内存中(见图)
(2)在调用getInstance()方法的时候,它返回 了一个S,将这个S赋给了SS(将getInstance里面的值s赋给了SS)(见图)
注意:
对象全在堆里面。
对象一建立就必须分配内存空间。
方法区中的S只是指向对象,引用了这个对象。
*/
}