Fork me on GitHub

成员变量,局部变量,静态变量

成员变量:在类体的变量部分中定义的变量,也称为属性。成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

                 成员变量有默认初始化值

局部变量:在方法体声明的变量和方法的参数称为局部变量。只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。局部变量没有默认初始化值

      在使用变量时需要遵循的原则为:就近原则

      首先在局部范围找,有就使用;接着在成员位置找。

     如果局部变量的名字与成员变量的名字相同,成员变量被隐藏,成员变量失效。

 静态变量:由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。

成员变量和静态变量的区别

      1、两个变量的生命周期不同

            成员变量随着对象的创建而存在,随着对象被回收而释放。

            静态变量随着类的加载而存在,随着类的消失而消失。

      2、调用方式不同

            成员变量只能被对象调用。

            静态变量可以被对象调用,还可以被类名调用。

      3、别名不同

            成员变量也称为实例变量。

            静态变量也称为类变量。

      4、数据存储位置不同

            成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

            静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据

 

三者之间的区别

 

成员变量

局部变量

静态变量

定义位置

 在类中,方法外

方法中,或者方法的形式参数

在类中,方法外

初始化值

有默认初始化值

,先定义,赋值后才能使用

有默认初始化值

调用方式

对象调用

---

对象调用,类名调用

存储位置

堆中

栈中

方法区

生命周期

与对象共存亡

与方法共存亡

与类共存亡

别名

实例变量

---

类变量

      

class test{                                   

                           int x;非静态成员变量,又称为属性,对该类不同的对象来说,属性是不同

                          static int y;// 静态成员变量,一个类中只有一个该变量,该类不同的对象共享同一个静态成员变量

                          public static void main(String[] args){int m = 0;// 局部变量,是方法内部定义的变量,只在方法内部可见,在该方法结束后,由垃圾回收器自动回

 }

posted @ 2018-07-30 22:54  雪人奥特曼  阅读(454)  评论(0编辑  收藏  举报