什么是静态?
在了解静态属性之前,先来看看实例属性是什么。
public class TestOne{
public static void main(String[] args) {
Myclass mc1 = new Myclass();
mc1.a = 10; // mc1的a
Myclass mc2 = new Myclass();
mc2.a = 20; // mc2的a
System.out.println(mc1.a + "\t" +mc2.a);
}
}
class Myclass{
int a;//这个了就是实例属性,是类的对象拥有的属性,每个对象都拥有;
}结果:10 20
下面是在内存中的分配
实例属性是每个对象各自持有的独立空间(多份),对象单方面的修改,不会影响其他对象
静态属性。(访问的最好方法是类名.属性,当然也可以使用对象.属性,只是编译器会出警告,并不会报错,无论哪种方式,都只会对应同一个静态属性)
静态方法,也属于整个类,不属于每个对象,
静态的特点
1:静态方法允许直接访问静态成员
2:静态方法不能直接访问非静态成员,原因是静态方法属于类,不需要创建对象就可以使用,而非静态成员属于每个对象,在使用静态方法时没有对象,所以无法访问非静态成员;
3:静态方法中不允许使用this或者是super关键字;理由,它们调用的都是非静态的
4:静态方法可以继承,不能重写,没有多态;
静态代码块语法:
static{
}
创建对象,调用静态方法都可以触发静态代码块的执行(其他见触发类加载的条件);不管创建多少个对象,调用多少次静态方法和其他的触发条件,在整个程序运行的过程中只执行一次;
触发类加载的条件(触发静态代码块的条件)