关键字static
在Java类体的定义中,包括对成员变量和方法的定义,而成员变量又分为类变量和实例变量,类变量是指被static关键字修饰的变量,也称静态变量;方法除构造方法外,也分为类方法和实例方法,毫无疑问被static修饰的就是类方法,也叫静态方法。
特点
Java程序执行时,字节码文件加载到内存区域,这时类变量被优先分配内存(分配在静态内存区域)。到调用构造方法创建类的对象时,JVM会为实例变量在栈区分配内存区域,而对于类变量则不会再重新分配新的内存区域。
正是由于这种内存分配方式决定了,类变量可以被该类创建的任意一个对象调用,同时还可以直接用“类名.变量名”的方法调用。用任何一个方法调用改变其值后,其它对象再调用该变量输出其值会发现它的值也是发生变化后的值。
对于类方法也是在字节码文件加载进内存后,就会给类方法分配入口地址,在创建第一个对象时只给实例方法分配入口地址 ,对于在创建第二、第三……第n个对象时就不会在为方法分配入口地址。
类方法只能调用类方法和类变量,不能使用this关键字。实例方法则既能调用类方法也能调用实例方法。既能调用类变量也能调用实例变量,可以使用this关键字