static关键词

static分析

1.意义

  • Java中并不存在全局变量的概念
  • 通过static修饰来实现“伪全局”
  • JVM加载一个类的时候,如果有被static修饰的成员变量或方法,则会为这些成员变量和方法在固定的位置开辟一个固定大小的内存区域,易于访问
  • 不可恢复性,修改后不会变回原样
  • 被static修饰将会独立于类,他被该类所有实例共享,任何一个实例对其的修改都会导致其他实例的改变

2.使用方法

2.1 static变量

  • static修饰的为静态变量,否则为实例变量
  • 静态变量随着类加载时被完成初始化的,它在内存中只有一个,jvm只会为他分配一次内存,同时类所有的实例都共享静态变量,并且可以通过类名直接访问
  • 实例变量伴随实例,没创建一个实例时就会产生一个实例变量,它与该实例同生共死
  • 使用静态变量主要是为了:对象之间共享数据,访问方便

2.2 static方法

  • static修饰的方法为静态方法
  • 可以通过类名直接对其调用
  • 它不依赖任何实例 👉 static方式必须实现 (不能为抽象方法)

2.3 static代码块

  • 被static修饰的代码块 👉 静态代码块
  • 会随着类的加载一块执行

3. static局限

  1. 只能调用static变量
  2. 只能调用static方法
  3. 不能以任何形式引用this,super
  4. static变量在定义时必须进行初始化
posted @ 2018-10-18 17:02  kojimako  阅读(69)  评论(0编辑  收藏  举报