A: static特点:
1,随着类的加载而加载。
静态会随着累的消失而消失,它的生命周期最长
2,优先于对象存在
静态是先存在的,对象是后存在的
3,被所有对象所共享
4,可以直接被类名所调用:类名.静态成员
class Person{
String name;//成员变量或者实例变量
static String country="China";//静态成员变量或者类变量
void show(){
System.out.println("name: "+name+" Country: "+country);
}
}
public class StaticDemo {
public static void main(String[] args){
Person p=new Person();
p.name="wang";
p.show();
Person p1=new Person();
p1.show();
}
}
结果为
name: wang Country: China
name: null Country: China
B:实例变量和类变量的区别:
1,存放位置:
类变量随着类的加载而存在于方法区中。
实例变量随着对象的建立而存在于堆内存中
2,生命周期:
类变量生命周期最长,随着类的消失而消失
实例变量的生命周期随着对象的消失而消失
C:静态使用注意事项:
1,静态方法只能访问静态成员
非静态方法既可以访问静态成员也可以访问非静态
2,静态方法中不可以定义this,super关键字
因为静态优先于对象存在,所以静态方法中不可以出现this。
3,主函数是静态的
D:静态优缺点
优点:对对象的共享数据进行单的空间存储,没有必要每个对象中都存储一份,节省空间。
缺点:生命周期长
访问出现局限性(静态虽好,只能访问静态)