02 成员变量VS局部变量 区别

来源:互联网 发布:在线铃声截取软件 编辑:程序博客网 时间:2024/05/21 11:14

成员变量VS局部变量  区别

* A:在类中的位置不同 (看代码则可理解)

    * 成员变量:在类中方法外
    * 局部变量:在方法定义中或者方法声明上
* B:在内存中的位置不同 (B,C一起记)
    * 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
    * 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
* C:生命周期不同
    * 成员变量:随着对象的创建而存在,随着对象的消失而消失
    * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
* D:初始化值不同 (看代码则可理解)
    * 成员变量:有默认初始化值

    * 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。


class Car {String name;int sex;String code;String address;public void drive() {int i = 0;System.out.println(name + i +  "在开车");}}
成员变量是name, sex, code, address.

局部变量是Int i;

为什么i是局部变量呢?

因为i在drive()方法里,drive()方法又在Car类里。所以i只是其中一小部分,好比人体的手一样,如果手烫伤了,我们会说局部烫伤。


说一下在内存中的位置。

在家,我们会用各种柜子将东西划分好,这样可以便于管理和使用。

在代码里,我们也会使用这种方法,将成员变量与局部变量放在不同的柜子里,一个叫堆,一个叫栈。

由于成员变量通常是一堆一堆的出现的,像名字,性别,家庭地址,都会一起给出,所以就将成员变量放于堆中。

那么局部变量就放于栈中了。

所以,成员变量:在堆内存。局部变量:在栈内存。


再谈一下生命周期。

生命周期就像我们人一样,从出生到死亡。

这行代码从最开始敲,我们先创建类,就像出生的婴儿。然后我们就要考虑取名,于是定义了姓名,也就是成员变量。

所以姓名(成员变量)是随着婴儿(对象)的创建而存在,如果哪一个婴儿老死了,那么他的姓名也就随他一起消失了。

总结:* 成员变量:随着对象的创建而存在,随着对象的消失而消失

局部变量是在方法中生成的,所以随着方法的调用而存在,随着方法的调用完毕而消失


初始值?

婴儿出生,还没有名字,我们会记个小名,比如虫虫,这样可以便于称呼。

所以成员变量(姓名)一开始系统就会给个默认的初始值。

但是方法就不同了,方法是后来的事,不用那么着急,所以系统不会给默认初始值,如果要使用,就自己去定义。


0 0