static关键字

  • 用来修饰共有的结构(属性/方法/代码块/内部类)
  • 实现共有结构的统一控制
  • 类中的常量也常常声明为static

修饰属性

  • 称为静态变量(静态属性或类变量)
  • 不能修饰局部变量
  • 属性按是否被static修饰分为静态属性和非静态属性(实例变量)
  • 创建类的多个对象以后,每个对象都独立的拥有一套类中的实例变量
  • 创建类的多个对象以后,多个对象共享同一个静态变量,实现一改全改
  • 实例变量随着对象的创建而加载.
  • 类变量随着类的加载而加载
  • 类变量的加载早于对象的创建
  • 可以通过"类.静态变量"的方式进行调用(如System.out,Math.PI)
  • 类只加载一次,所以静态变量也只加载一次
  • 静态变量存在<font size=3 color=red>方法区</font>的静态域中.
  • 静态变量可以直接通过"类.静态变量"方法调用,不需要创建对象

修饰方法

  • 随着类的加载而加载,可以通过"类.静态方法"的方式进行调用.
  • 因为生命周期,非静态方法中既可以调用非静态的结构,也可以调用静态的结构
  • 静态方法中只能调用静态结构
  • 静态的方法内不能使用this/super这两个需要基于当前对象的关键字(编译不通过)
  • 静态结构在类中被调用时可以直接写结构名,省去了类名.

static选定标准

  • 选定类变量

    • 属性可以被多个对象共享,不会随着对象发生变化
  • 选定静态方法

    • 操作静态属性的方法通常也设为static的
    • 工具类中的方法,一般也声明为static的(如Math/Arrays/Collections)

rengang
1 声望0 粉丝