数据类型别大致分为:基本、引用数据类型,那这两类数据在作为不同变量时对应的内存
变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放。
局部变量随方法的创建而存在,随着方法的退出而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
调用方式不同
成员变量只能被对象调用。
静态变量被类名调用。
别名不同
成员变量也称为实例变量。
静态变量也称为类变量。
数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
局部变量则是在方法调用时存储于栈中。
注意,这里存储位置是指变量,而真正的实例都是存储在堆中。一般的引用类型通过new创建实例,每个变量指向堆中的实例(但是String除了new对象,也可以通过“字面量”创建对象,对象引用创建后位于字符串常量池,实际对象也是在堆中,只是可能会出现多个变量指向同一个对象)。对于基础类型的包装类,通过new创建的实例在堆中。与String类型类似,对于某些值,比如整型类型(-128~127)之间的数放在一个单独的缓存池中,那么在Integer类型直接赋常量时,也会出现多个变量指向一个对象的情况。
Integer a=new Integer(24);
Integer b=new Integer(24);
System.out.println(a==b);//false
Integer c=244;
Integer d=244;
System.out.println(c==d);//false
Integer e=24;
Integer f=24;
System.out.println(e==f);//ture