美文网首页
成员变量、局部变量、静态变量、实例变量

成员变量、局部变量、静态变量、实例变量

作者: lbcBoy | 来源:发表于2020-05-13 17:55 被阅读0次

成员变量 vs 局部变量

成员变量在类中定义,可以在类里面使用;
局部变量在方法内定义,可以在方法内部使用;

成员变量存在堆中,随着对象创建在诞生,随着对象被回收而消失;
局部变量在栈中,随着方法进栈而诞生,方法出栈而消失;

静态变量 vs 实例变量(成员变量)

静态变量存储在方法区,属于类所有;
实例变量存储在堆当中,其引用存在当前线程栈;
需要注意的是从JDK1.8开始用于实现方法区的PermSpace被MetaSpace取代了.

1、生命周期的不同:
成员变量随着对象的创建而存在随着对象的回收而释放。
静态变量随着类的加载而存在随着类的消失而消失。
2、调用方式不同:
成员变量只能被对象调用。
静态变量可以被对象调用,也可以用类名调用。(推荐用类名调用)
3、别名不同:
成员变量也称为实例变量。
静态变量称为类变量。
4、数据存储位置不同:
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

静态变量的使用

在程序运行期间, * 类中的静态变量其内存空间对所有该类的实例是共享的 *,
因此在某些时候,为了节省内存空间开销,共享资源,我们可以将类中的变量声明为静态变量。
但是因为静态变量生命周期太长,并且不易被系统回收,所有如果使用不合理,就会适得其反,从而造成大量内存的浪费。
因此建议在全部符合下列条件的情况下才使用静态变量:
  (1)变量所包含的对象体积较大,占用内存较多
  (2)变量所包含的对象生命周期较长
  (3)变量所包含的对象数据稳定
  (4)该类的实例有对该变量包含对象的共享需求

public class HasStatic{
    private static int x=100;
    public static void main(String args[]){
         HasStatic hs1=new HasStatic();
         hs1.x++;
         HasStatic  hs2=new HasStatic();
         hs2.x++;
         hs1=new HasStatic();
         hs1.x++;
         HasStatic.x--;
         System.out.println("x="+x);
      }
    } 
  
结果应该是:102
解释:类中的静态变量其内存空间对所有该类的实例是共享的

相关文章

  • 成员变量、局部变量、静态变量、实例变量

    成员变量 vs 局部变量 静态变量 vs 实例变量(成员变量) 静态变量的使用

  • Java学习笔记-1.4.2变量的分类

    变量的分类 从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量 局部变量、成员变量、静态变量的区...

  • 记一次Java后端实习生面试(1)

    2018-5-18面试: 1.成员变量、静态变量和局部变量的区别; 成员变量和局部变量的区别 成员变量: ...

  • 变量

    变量可分为局部变量、成员变量(也叫实例变量)、静态变量 1.与C语言不同,Java中的局部变量必须先初始化再使用 ...

  • 2019-12-21 python变量

    python变量 全局变量 局部变量 静态变量 实例变量 https://www.imooc.com/articl...

  • 3.primitive主数据类型和引用

    primitive——原始 变量有实例变量和局部变量(声明在方法中的变量)成员变量(实例变量),如果是引用类型,则...

  • 四、JNI-成员和方法

    成员 方法 #1. 成员 Java中成员变量分为普通成员变量和静态成员变量。普通成员变量也称为类实例成员变量,所有...

  • Java中的三种变量

    三大变量分别是类变量(静态变量)、实例变量和局部变量(本地变量)。所有的局部变量都存储在线程的栈中,而所有的类变量...

  • Java中的成员变量和局部变量

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

  • java 初学语法-变量、枚举

    1、Java 中主要有如下几种类型的变量 局部变量 类变量(静态变量) 成员变量(非静态变量) 2、枚举限制变量只...

网友评论

      本文标题:成员变量、局部变量、静态变量、实例变量

      本文链接:https://www.haomeiwen.com/subject/rujwnhtx.html