方法包括静态和非静态。
方法优先于对象存在。
静态随着类加载而加载,消失而消失
那非静态呢?什么时候加载,什么时候消失,生命周期多长?
我说的是方法区中的方法,不是栈中的方法。
首先说非静态方法加载
类在加载时类中的非静态方法已经存在,存在于方法区中,不过它们没有任何作用
相当于“睡眠”状态。
类加载结束后,调用到非静态方法,才将其唤醒,使用非静态方法。
然后其生命周期
严格来说,不能说方法的生命周期,实际上类中的非静态方法,
你可以认为,是在类中有一个引用,他指向方法区中的方法,在类中
执行到这个方法引用时,就调用方法区中的方法,调用结束后,引用消失
但是方法依然存在于方法区,直到类消失,方法区中的方法没有了引用
方法区中的方法自然就消失了
所以 ,你可以认为:方法是在类消失之后,也随之消失
最后解释一句:楼主说的栈中的方法,我表示不解
我认为栈中存放的只是方法中的成员变量和局部变量
方法可以存放在栈中吗?
|