• 类变量,成员变量,局部


    1 public class JingTai {
    2     public  static  int  a; //类变量(静态变量) 随着类的加载而出现,随着类的消失而消失
    3     public  int  b;      //成员变量,随着对象的创建而创建,随着对象的回收而释放
    4     public  void  s()
    5     {
    6         int  a;   //局部变量
    7     }
    8 
    9 }

    成员变量和局部变量的区别

           成员变量:

              1、成员变量定义在类中,在整个类中都可以被访问。

              2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

              3、成员变量有默认初始化值。

        局部变量:

             1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

             2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

             3、局部变量没有默认初始化值 

    在使用变量时需要遵循的原则为:就近原则  首先在局部范围找,有就使用;接着在成员位置找。

    成员变量和类变量的区别

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

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

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

      2、调用方式不同

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

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

     3、别名不同

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

          静态变量也称为类变量。

     4、数据存储位置不同

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

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

      特点:

       1、想要实现对象中的共性数据的对象共享。可以将这个数据进行静态修饰。

       2、被静态修饰的成员,可以直接被类名所调用。也就是说,静态的成员多了一种调用方式。类名.静态方式。

       3、静态随着类的加载而加载。而且优先于对象存在。

    弊端:

      1、有些数据是对象特有的数据,是不可以被静态修饰的。因为那样的话,特有数据会变成对象的共享数据。

          这样对事物的描述就出了问题。所以,在定义静态时,必须要明确,这个数据是否是被对象所共享的。

       2、静态方法只能访问静态成员,不可以访问非静态成员。

          因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。

       3、静态方法中不能使用this,super关键字。

          因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。

     

     

    原文链接:https://blog.csdn.net/du_minchao/article/details/48881637

  • 相关阅读:
    洛谷 1850 NOIP2016提高组 换教室
    2018牛客多校第三场 C.Shuffle Cards
    2018牛客多校第一场 B.Symmetric Matrix
    2018牛客多校第一场 A.Monotonic Matrix
    2018牛客多校第一场 D.Two Graphs
    2018宁夏邀请赛L Continuous Intervals
    2018宁夏邀请赛K Vertex Covers
    BZOJ
    HDU
    ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)
  • 原文地址:https://www.cnblogs.com/slpwyl/p/14664067.html
Copyright © 2020-2023  润新知