Java中成员变量和局部变量的区别 什么是成员变量和局部变量 成员变量:类中方法外的变量 局部变量:方法中的变量 区别 区别成员变量局部变量类中位置不同类中方法外方法内或者方法声明上内存中位置不同堆内存1栈内存2生命周期不同随着对象的存在而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的调用完毕而消失初始化值不同有默认的初始化值没有默认的初始化值,必须先定义,赋值, 才能使用 堆内存:用来存放由 new 创建的对象和数组,在堆中分配的内存, 由 Java 虚拟机的自动垃圾回收器来管理,只有在垃圾回收器空闲的时候才会去回收,所以堆内存中容易造成程序碎片化。通俗来说就是程序员开辟内存空间需要在堆内存中。 ↩︎ 栈内存:函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当变量超过一定的作用范围后,Java虚拟机会自动释放栈中的变量,用于其他变量存储。 ↩︎