static关键字
1、当成员变量被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用
类名.静态成员
static特点
1、随着类的加载而加载(只要一个类一加载就会有静态成员)
也就是说静态随着类的消失而消失,生命周期长
2、优先于对象存在
明确一点静态是先存在的,对象是后创建实例存在的
3、被所有对象共享
4、可以直接被类名所调用
实例变量(对象创建后存在变量)类变量(类一加载就生成的变量)的区别
1、存放位置
类变量对着类的加载而存放在方法区中
实例变量随着对象的建立而存放在堆内存中
2、生命周期
类变量生命时期最长 ,随着类的消失而消失
实例变量的周期随着对象的消失而消失
静态使用的注意事项
1、静态的方法只能访问静态的成员
static String country="中国";
int age=0;
public static void show(){
System.out.println("国家为:"+country+age);
}
2、非静态方法既可以访问静态也可以访问非静态
3、静态方法中不可以定义this,super关键字
因为静态优先于对象存在,
静态有利有弊
弊端:生命周期过长,万万不可把所有的变量都定义静态的。
访问有局限性。(静态只能访问静态)
利处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每个对象都存储一份。
public class jingTai {
public static void main(String[] args) {
Personone p= new Personone();
p.show();
}
}
class Personone{
static String country="中国";
int age=0;
public void show(){
System.out.println("国家为:"+country);
}
}
转载于:https://blog.51cto.com/5059062/1867252