Static 静态
他是一个修饰符, 用来修饰成员(成员变量 or 成员方法)
修饰成员变量时, 他修饰的是对象所拥有的一模一样的属性, 这样就不必每次创建对象对象里都有一个共有的一模一样的本该被 static 修饰的属性. 例如: 中国人的国籍就是 static 修饰的, 因为中国
人都有中国 的国籍
被 Static 修饰的成员变量, 就不在堆内存中了, 而在方法区中
static 在内存中的特点:
随着类的加载而加载 (当类一被运行, static 就在方法区内存中了) 随着类的消失而消失, static 修饰的成员的生命周期最长
优先于对象存在
被所有对象所共享
可以直接被类名所调用
static 修饰的变量 (类变量) 和成员变量 (实例变量: 随着对象的建立而存在于堆内存中) 的区别:
存放位置不同, 成员变量存放在堆中, 类变量存放在方法区
生命周期不同, 成员变量随着对象的消失而消失, 类变量随着类的消失而消失, 所以类变量的生命周期比实例变量长
static 的使用注意:
静态方法只能访问静态成员
静态方法不可以定义 this,super 关键字(静态优先于对象存在)
Static 什么时候使用:
当实例变量是所有对象的共有数据时使用
当普通方法内部没有访问实例变量时使用, 从而不需要 new 对象使用, 直接类名调用即可.
如果普通方法是作为功能使用的, 那么一般使用 static 修饰, 例如 java 自带的工具类
当成员被修饰后, 就多了一个调用方式, 除了被对象调用以外, 还可以被类调用(类名. XXXX)
来源: http://www.bubuko.com/infodetail-3331715.html