什么是静态
静态:以关键词static修饰(静态的意思),也就是说被static所修饰的就是静态的,包括变量、方法、块,字段。
static修饰的变量,方法称为静态变量和静态方法,static修饰的代码块称为静态代码块。
static方法就是没有this的方法,在static的方法內部中不能调用非静态方法,相反在非静态方法内部可以调用静态方法,而且可以在没有创建类的对象的前提下也可以用过类名来调用静态方法,静态变量和静态方法一样,这也正是static的重要用途。
静态特点
- 全局唯一,任何一次的修改都会影响全局。
- 只回加载一次,随着类的加载被加载,优先于非静态。
- 通过类名调用,使用时不会依赖于实例化对象。
- 生命周期属于类级别,JVM加载开始到JVM卸载结束。
静态变量
也就是被static修饰的类,静态变量与非静态变量的区别:静态变量是被所有对象共享的,在内存中只存在一个,随着类的初次加载即被初始化一次,即使没有创建对象,也可以通过类名进行调用。非静态变量是对象所拥有的,在创建对象的时候被初始化,每个对象所有的非静态变量不会互相影响。静态变量属于类,不属于类中的任何一个对象,一个类不管创建都少个类,静态变量在内存中只会有一个。
静态方法
被static修饰的方法,和静态变量一样不需要创建对象就可以进行访问,随着类的初次加载被加载到内存中,不会自动销毁,直到JVM关闭,在静态方法中不可以调用非静态成员方法和非静态成员变量,最重要的是静态方法不可以被重写
内存中的存放位置
方法区:静态变量随着类的加载,和类一样存放在方法区中
堆:来存储创建出来的对象
栈:主要是运行方法的,如:main方法