关于成员变量和局部变量的区别,底层每一点区别都是导致后边他们之间性质和使用不同的原因,一步接一步,这样理解和记忆起来就不会那么吃力了。
首先,最容易接受的是他们在类中的位置不同,成员变量位于类中方法外,而局部变量位于方法定义中或者方法声明上;这一点就导致了他们在内存中的位置不同,成员变量(排除被静态修饰的)随着对象的创建而存在所以位于堆内存,而局部变量随着方法的调用而调用,而方法的调用要进栈,所以位于栈内存。从上边就可以得到他们的初始化值和生命周期的不同,成员变量随着对象的创建而创建,随着对象的消失而消失,有默认初始化值;而局部变量随着方法的进栈而调用,随着方法的弹栈而消失,没有默认初始化值,需要先初始化再使用。 |
|