1.生命周期不同
成员变量伴随着对象的创建而存在,随着对象的回收而释放。
静态变量随着类的加载而存在随着类的消失而消失。
2.调用方式不同:
成员变量只能被对象调用
静态变量可以被对象调用也可以被类名调用
3.别名不同
成员变量也叫实例变量
静态变量也成为类变量
4.数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据
静态变量数据存储在方法区(的静态区),所以也叫对象的共享数据。
class Person{
String name;//实例对象,成员变量
static String country="china";//静态变量,类变量
public void show(){
System.out.println("speak");
}
}
public class Test {
public static void main(String[] args) {
Person p=new Person();//创建一个对象
System.out.println(Person.country);//静态变量可以通过类名调用
//成员变量不能通过类名调用
p.name="wangcai";//对象可以调用成员变量
p.country="cn";//对象可以调用静态变量
System.out.println(p.country);
}
}