当成员(变量、函数)被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用:类名.静态成员。
static特点:
1.随着类的加载而加载。
也就是说:静态会随着类的消失而消失。说明它的声明周期最长。
2.优先于对象存在
明确一点:静态是先存在,对象是后存在的。
3.被所有对象所共享
4.可以直接被类名调用。
静态使用注意事项:
- 静态方法只能访问静态成员(变量、函数)。
非静态方法既可以访问静态,也可以访问非静态。
- 静态方法中不可以定义this,super关键字
因为静态优先于对象存在。
- 主函数是静态的。
静态利弊:
利处:
1.对对象的共享数据进行单独空间存储,节省空间,没有必要每个对象中都存储一份。
2.可以直接被类名调用。
弊端:
1.生命周期过长。
2.访问出现局限性,静态虽好,只能访问静态。
实例变量和类(static)变量的区别:
- 存放位置
类变量随着类的加载而存在于方法区中。
实例变量随着对象的建立而存在于堆内存中。
- 生命周期
类变量生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。