类变量:形如static int a; 顾名思义,类变量可以理解为类的变量,类变量在类加载的时候就已经给它分配了内存空间,不同于实例变量(int a; ),实例变量是在该类创建对象的时候分配内存的。并且,每创建一个对象,就会为该实例变量分配相应的内存空间,而类变量它不属于任何一个对象,它为所有对象所共享,所有对象的类变量占用相同的一处内存空间。调用类变量过程中,可以用 类名.类变量 也可以 对象名.类变量 来调用。类变量同于C/C++中接触的static变量,有记忆功能。
类方法:static void show(); 和类变量一样,类方法也是属于该类的,在类加载的时候,就为该类方法分配了入口地址,而实例方法,只有在对象创建后才被分配入口地址。同样的,类方法可以被所有对用调用,可以用 类名.类方法 或者 对象名.类方法 来调用。实例方法只能有对象名来调用。但要注意的是类方法不可以调用实例变量,这是因为,类方法是在类加载的时候被分配的,而这个时候,可能还没有创建对象来为实例变量来分配内存空间,即实例变量可能还不存在,所以不可以用类方法来调用实例变量。实例方法可以调用所有的实例变量和类变量。
实例变量和实例方法都是在对象消亡是才释放内存空间,类变量和类方法直到程序运行结束退出才释放所有的内存空间。