Java基础之成员变量与局部变量
变量根据定义位置的不同,我们给变量起了不同的名字。如下图所示: 局部变量:定义在函数(方法)中的那些变量。局部变量只在定义它的方法(函数)中有效。 成员变量:定义在类的成员位置上的变量。成员变量在整个类中都有效。(全局变量是成员变量的俗称)。 成员变量又分为 实例(对象)变量 和 类变量(static静态变量)。(先了解,后面会详细讲解) class Car{ String color;//color为实例变量 static Stringname; //只要有关键字static修饰,name为类变量 } 不管是成员变量还是局部变量它们都符合java基础学习的变量的定义规则。 1) 数据类型 变量名 ; 2) 数据类型 变量名=值; 思考下面代码的结果是什么? 注意:在类中和该类的一个函数中,同时存在一个相同类型相同名称的变量,在函数被执行时,函数中优先使用定义在函数中的变量(局部变量)。 优先级:先使用内部的,再使用外部的(先去内部找,有就使用。没有则再去外部找)就近原则。 局部变量和成员变量的区别: 1、从定义上来讲: 局部变量定义在函数中。 成员变量定义在类中。 2、从内存存储上来讲: 局部变量随着函数的运行会在栈内存中出现,局部变量存储在栈内存中。 成员变量会随着对象的出现在堆中存在,成员变量存储在堆内存中。 3、从初始值上来讲: 局部变量在定义时需要指定初始值(局部变量没有默认值),只有初始化之后才能使用。 成员变量可以不用初始化,有默认值。 4、从存活时间上来讲(生命周期) 局部变量是随着函数的进栈在函数所属的栈内存中存在,随着函数的出栈就消失。 成员变量是随着对象的出现在堆中出现。随着对象的消失而消失。
|