内存分配: 类变量、实例变量、成员变量、局部变量

成员变量有2种:类变量和实例变量

类变量(又叫静态变量)前面加static关键字修饰;

1、 jvm把.class类加载到非堆里,然后在中为.class的类变量开辟内存;堆中的地址存放于以便高速访问;

2、类变量的生命周期一直持续到整个“系统”关闭;

3、一旦赋值它的值就在你new出来的任何一个实例中具有相同的值;

实例变量前面不加static关键字修饰;

1、当你用java关键字new一个对象时,jvm将在里创建对象,并在中开辟空间给变量(空间不一定连续),然后根据零散的堆内存地址,通过哈希算法得到“物理地址”;

2、实例变量的生命周期:当实例变量的引用丢失后,将被gc回收,但并不是马上释放堆中内存;

3、每一个new出来的新实例都可以对他赋予自己需要的值

例子
class example{
 static int a = 0;
 int b = 1;
}
a是类变量,b是实例变量
example e1 = new example();
example e2 = new example();
改变e1中a的值会使e2中的a值也改变,而e1中b值的变化不会带来e2中b值的变化;
同一个jvm里,一个类变量只需要分配一个内存空间;对于实例变量,每创建一次对象,都需要为实例变量分配一次内存空间;
------------------------------------------------------------------------------------
实例变量:声明在某方法,或某代码段里(如for循环)

1、执行它时在堆中开辟内存,其引用被置于一个连续的栈中提供高速访问;

2、当局部变量一旦脱离作用域,内存立即释放;

   

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值