成员变量、静态变量、局部变量

数据类型分为基本和引用类型,影响变量的生命周期和存储位置。成员变量属于对象,随对象创建和销毁。静态变量与类同生共死,存储在方法区。局部变量在栈中,随方法执行。静态变量由类名调用,实例变量由对象调用。Integer等包装类的新实例在堆中,特定情况下(如-128至127的整型)可能存在多个变量指向同一对象。
摘要由CSDN通过智能技术生成

数据类型别大致分为:基本、引用数据类型,那这两类数据在作为不同变量时对应的内存

变量的生命周期不同

成员变量随着对象的创建而存在,随着对象被回收而释放。

局部变量随方法的创建而存在,随着方法的退出而释放。

静态变量随着类的加载而存在,随着类的消失而消失。

调用方式不同

成员变量只能被对象调用。

静态变量被类名调用。

别名不同

成员变量也称为实例变量。

静态变量也称为类变量。

数据存储位置不同

成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

局部变量则是在方法调用时存储于栈中。

注意,这里存储位置是指变量,而真正的实例都是存储在堆中。一般的引用类型通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值