变量(成员变量、局部变量)、堆栈

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)栈内存:所有的方法运行的时候进入的内存,当没有调用时就被回收,缺乏灵活性。

原文地址:https://www.cnblogs.com/zhai1997/p/11265355.html