用法:是一个修饰符,用于修饰成员(成员变量,成员函数),不能用于修饰局部变量!被static修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用,写法格式是:类名.静态成员。
优点:被static修饰的成员或变量单独存放在一段内存空间里面,被所有对象实例共享,不必再在形成对象实例的过程中再为其开辟一段内存空间,以达到节省内存的作用。
什么时候用修饰静态变量(类变量)?
是所有对象共有且不变的内容用static修饰,对象所特有的内容随着对象的建立一起存储。
什么时候定义静态函数?
当某函数内部没有访问到非静态数据(对象所特有数据),那么该功能可以定义成静态的。
特点:
1,随着类的加载而加载,也就是说会随着类的消 失而消失,说明他的生命周期最长。
2,优先于对象存在。明确一点:静态先存在,对象后存在。
3,被所有对象所共享。
4,可以直接被类名调用。
实例变量和类变量:
1 存在位置:类变量随着类的加载而加载于方法区中;实例变量随着对象的建立而存在于堆内存中。
2 生命周期:类变量生命周期最长,随着类的消失而消失;实例变量随着对象建立而存在,随着对象消失而消失。
静态使用注意事项:
1 静态方法只能访问静态成员或方法。非静态方法可以访问非静态变量,也可以访问静态变量或方法。
2 静态方法中不可以定义this,super关键字,因为静态优先于对象存在(this指代的是调用该方法的对象,而静态存在的时候对象还不存在),所以静态方法中不可以出现this。
3 主函数是静态的。
静态利弊:
利:对对象的共享数据进行单独空间的存储,节省空间,没有必要每个对象中都存储一份。可以直接被类名调用。
弊:生命周期过长。访问出现局限性(静态只能访问静态)