一、生命周期
1、静态变量的生命周期是应用程序初始化是分配内存,直到类的程序运行结束后被销毁。
2、非静态变量(实例变量)的生命周期是实例化的类的存在周期。
二、内存分配
1、静态变量是在初始化类的时候加载分配内存。
2、非静态变量是在类实例化时分配内存。
三、调用方式
1、静态变量只能通过"类名.变量名"进行调用,因为静态变量只属于类,它在对象初始化之前加载所以不可访问非静态成员。
2、非静态成员在该类实例化之后可以通过该类实例化之后的类名直接访问。
四、共享方式
1、静态成员被所有类的实例对象共享,属于全局变量,当某一个实例改变了静态变量的值则其他类的实例所读到的是改变之后的值。
2、非静态变量是局部变量。
五、访问方式
1、静态成员不可以访问非静态成员。
2、非静态成员可以访问静态成员。
原因:在jvm中静态成员的加载顺序在对象之前,而非静态成员在对象初始化时创建,所以静态不能直接访问非静态成员。