static变量
被static修饰的变量,称为静态变量,也叫类变量。(没有被static修饰的变量,称为实例变量。)
被static修饰的方法,称为静态方法,可以直接通过类名访问。(没有被static修饰的方法,称为实例方法。)
被static修饰的代码块,称为静态代码块,当Java虚拟机加载类时,会先运行该代码块。
特点
静态变量只会开出一个内存空间,所有的对象都可以通过类名来访问这个静态变量,这个内存空间不存在于栈和堆中, 是独立开辟出来的静态空间,不手动销毁,这个空间会一直存在。
静态变量,只存在于类中,无法在方法中来定义。
static方法
被static修饰的方法,称为静态方法 ,静态方法可以直接通过类名访问。
特点
静态方法不能调用实例方法和实例变量。不能使用this和super。(this代表当前对象,而静态方法通过类名直接调 用,和对象无关,所以与this存在冲突,无法使用this。)
静态方法必须被实现,既静态方法里必须要有方法体!
static代码块
jvm(Java虚拟机)加载类时,会先加载代码块,
如果有多个静态代码块,则按循序加载。
每个代码块只会执行一次。