类变量 成员变量 实例变量 局部变量

成员变量

位置:成员变量是定义在类中,方法体之外的变量

成员变量分为俩种:

①被static 修饰 \rightarrow 类变量(静态变量)可以通过类名直接调用

②没有被static修饰 \rightarrow 实例变量  必须创建对象后(main方法中new对象后)通过对象名调用实例变量

总结:成员变量包括 类变量 和 实际变量

类变量(静态变量)

  1. 由static 修饰的变量称为静态变量,实质是一个全局变量
  2. 存放位置:存放在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
  3. 生命周期:类变量随着类的加载而存在,随着类的消失而消失
  4. 调用方式:类变量可以被对象调用,还可以被类名调用

【说明】

Java中方法区的位置分三种情况:

  1.  java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变;
  2.  java7中,static变量从永久代移到堆中;
  3.  java8中,取消永久代,方法存放于元空间(Metaspace),元空间仍然与堆不相连,但与堆共享物理内存,逻辑上可认为在堆中

实例变量

  1. 存放位置:成员变量存储在堆内存的对象中,所以也叫对象的特有数据
  2. 生命周期:成员变量随着对象的创建而存在,随着对象的回收而释放
  3. 调用方式:成员变量只能被对象调用

局部变量

位置:在类中方法体里面所定义的变量,不管是方法的形参,还是方法体内所定义的变量都是局部变量

定义:在方法、构造方法或者语句块中定义的变量被称为局部变量

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

作用域:其所在方法体的头大括号开始到尾大括号结束,也就是说局部变量只能在此方法中调用

生命周期:变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

  1. 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
  2. 局部变量没有默认初始化值
  3. 定义在类中方法中,在JVM中属于栈中,声明时没有默认的初始值,初始化时必须手动赋值

类变量与局部变量:类变量有默认值,可以不初始化;但局部变量必须要初始化

猜你喜欢

转载自blog.csdn.net/y1120944224/article/details/128286529