Java基础——堆和栈、static关键字、静态变量和成员变量的区别

Java基础——堆和栈、static关键字、静态变量和成员变量的区别_第1张图片
Java程序运行顺序:Java应用程序—虚拟机—操作系统—硬件
Java中栈内存用来存储局部变量和方法调用,堆内存用来存储Java中的对象,成员变量、局部变量、类变量指向的对象都存储在堆内存中。
static关键字:

  1. 随着类的加载而加载
  2. 优先于对象存在
  3. 被类的所有对象共享
    如果某个成员变量是被所有对象共享的,那么他就应该定义为静态的
    静态只能访问静态

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

  1. 所属不同
    静态变量属于类,也被称之为类变量
    成员变量属于对象,也被称之为实例变量(对象变量)
  2. 内存中位置不同
    静态变量存储于方法区的静态区
    成员变量存储于堆内存
  3. 内存出现时间不同
    静态变量随着类的加载而加载,随着类的消失而消失
    成员变量随着对象的创建而存在,随着对象的消失而消失
  4. 调用不同
    静态变量可以通过类名和对象调用
    成员变量只能通过对象调用

你可能感兴趣的:(java)