总的来说:
1.static是java中的一个关键字,单词本身是静态的含义
2.使用static修饰的成员称为静态成员,是属于某个类的;而不使用static修饰的称为实例成员,是属于类的每个对象的。
3.一个类的成员包括成员变量、执行方法、构造方法、代码块和内部类,static可以修饰除了构造方法以外的所有成员。
下面对其进行详细的介绍:
1.static修饰变量
static属于这个类所有,即由该类创建的所有对象共享同一个static属性。static变量和非static变量都是成员变量,这是共同点,区别主要是:
(1)在内存中份数不同
一个类一份:不管有多少个对象,static变量只有一份。对于每个对象,实例变量都会有单独的一份
非static变量:是一个对象一个,static变量好比是饮水机,大家共享;非static是水杯,每个人都有 ;
(2)在内存中存放的为位置不同
static变量存放在方法区(元空间),非static变量存放在堆内存中;
(3)访问的方式不同
static变量:对象名.变量名 或类名.变量名
非static变量:对象名.变量名
(4)在内存中分配空间的时间不同
static变量:第一次加载类的时候