static简述:
JAVA类在加载时类信息、全局变量和方法、静态变量、final修饰的变量会被存到方法区,局部变量存在栈内存中,当实例化一个对象时就把非staitc修饰的方法和变量复制到堆内存中以便对象引用,线程则被加载到寄存器运行。
一.static修饰的变量
static修饰的变量当类被加载时初始化。而非static变量在实例化对象时被初始化,产生多个副本,多个对象不互相影响。
局部变量不能被static修饰
static不改变变量和方法的作用域,其作用域只受四个访问修饰符的影响
二.static修饰的方法
被static修饰的方法内部不能调用非static的变量和方法,非static方法内部可以调用static变量的方法和变量。
三.static修饰的代码块
static修饰的代码块在类加载时执行一次
static代码块优先于构造方法
总结:所有static修饰的变量和方法是独立于对象而存在的,不产生副本,可以直接用类名来调用。