1、成员变量和局部变量的不同点:
(1)位置不同
成员变量:在类中,方法外
局部变量:方法中
(2)作用域不同
成员变量:整个类
局部变量:方法或语句内
(3)默认值不同
成员变量:有默认值(不赋初值不会报错)
局部变量:无默认值,赋值后才能使用(不赋初值会报错)
(4)内存位置不同
成员变量:堆内存
局部变量:栈内存
(5)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
public class Demo1 { private int age;//成员变量 public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void test(){ int num=1;//局部变量 System.out.println(num); } public static void main(String[] args){ Demo1 demo1=new Demo1(); demo1.test(); } }
2、堆栈:java将内存划分为两种:堆内存和栈内存
(1)堆内存:堆内存用来存放由new创建的对象和数组。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定,具有很大的灵活性。
(2)栈内存:所有的方法运行的时候进入的内存,当没有调用时就被回收,缺乏灵活性。