static关键字:
1.是一个修饰符,用于修饰成员变量和成员函数;
2.不在堆空间中,不是每个对象单独有的,是所有对象公用一份,节省内存空间。
3.当成员被静态修饰后,多了一种调用方式,除了被对象调用外,还可以直接用类名调用,格式:类名.静态变量名。
4.特点:
1.随着类的加载而加载;只要有类,就有这个静态存储变量;也就是说随着类的消失而消失
2.优先于对象存在;
3.被所有对象共享;
4.可以直接被类名称调用。
5.实例变量和类变量(静态变量)的区别:
1.存放位置:
类变量:随着类的加载而加载;存在于方法区中!
成员变量:随着对象的建立,存在于堆内存中!
2.生命周期:
类变量:生命周期最长;随着类的消失而消失;
成员变量:随着对象的消失而消失
6.静态的使用注意事项:
1.静态方法只能访问静态成员;
2.非静态方法可以访问静态成员和非静态成员。
3.静态方法不可以定义this,super关键字;因为this和super是随着对象的建立而建立的,而静态方法优先于对象,随着类的加载而加载的;
7.静态有利有弊:
利:对对象的共享数据进行单独空间的存储,节省空间,没有必要每个对象都存储一份;可以直接被类调用;
弊:生命周期过长,访问出现局限性(只能访问静态)
8.什么时候使用静态数据:
1.出现共享数据时,该数据被静态修饰。
2.对象中的特有数据要定义成非静态的堆内存中。
9.什么时候使用静态方法:
当功能内部没有访问都非静态数据(对象的特有数据)
10. 静态的应用:
每个应用程序中都有共性的功能,可以将这些功能封装,以便服用。