Static修饰的变量
在Java中属性和方法的分类:
实例属性和实例变量(没有被static修饰):必须通过实例化的对象对其调用才能使用(对其赋值,初始化)重点内容
类变量和类方法(被static修饰):属于类而不属于某个特定的对象,无需对象调用,类名调用即可。在初始化类时,即被初始化。
从分配空间的角度讲
类加载到JVM编译时,如果当前类有static修饰的变量和方法,被加载到jvm同时,在类所占的空间中会对static修饰的变量和方法进行初始化和分配空间。而实例属性和实例方法并没有被分配空间。当类初始化一个对象时,在类中的空间,分配一定的空间给对象。并在此对象中为实例变量及方法分配空间。
所以,static修饰的变量和方法,与类初始化对象的空间在同一等级位置。所以它并不属于任何一个对象,而属于类!static变量相当于于全局变量*可以通过类名直接调用(可以对象调用,但不建议)不管创建了多少个对象,类变量所占空间只有一个*。
静态方法
在静态方法中只能访问静态的属性和方法
可以通过对象实例化调用非静态属性和方法
在非静态方法中可以访问静态方法和属性
在静态方法中无法使用this和super关键字
静态方法不能被重写为非静态方法
静态代码块
在类中可以使用不包含任何方法中的静态代码块(static block),当类被JVM载入时,静态代码块被执行,且被执行一次。
作用:静态代码块初始化静态成员变量
语法
静态代码块:
static{}
按照代码块顺序执行
static int num;
static String name;
static{
num=100;
name="zhangsan";
} //不写入任何方法当中