实例变量与类变量的区别:
实例变量:类的所有对象都会被分配相应的实例变量,及不同的对象的实例变量存储在不同的内存里;
类变量:类的所有对象都共享一个类变量,及类被加载到内存时,类变量的内存已经被分配,改变其中一个对象的这个类变量会影响其他对象的这个类变量,及该类变量被所有对象所共享。
例:
class A{
int x;
static int y;
}
class B{
A a1=new A();
A a2=new A();
}
实例方法与类方法的区别:
实例方法:只有在类创建第一个对象时,实例方法才被分配入口,但是,该入口被所有对象共享,方法中的成员变量被认为是分配给该对象的成员变量,类变量和其他对象共享,该入口只有当所有对象不存在时才被取消。
类方法:在类被加载到内存中时,类方法就分配了相应入口地址,可以直接通过类名进行调用,只有当退出程序时该入口地址才被取消,所以类方法中只能调用类变量和类方法。
注:类方法中只能调用类变量和类方法