变量的类型和内存位置分配

内存类型

成员变量(实例变量、属性)

定义:在类中定义,在类对象被创建时,分配内存。属于是对象的属性,类被实例化后才有意义的变量,所以又叫实例变量。
作用范围:实例变量初始化之后,类中所有位置都可访问
出生:对象被创建时,开辟内存空间
死亡:堆内存中对象,在栈内存中没有引用指向,等待GC回收

局部变量(本地变量)

定义:在方法中定义的变量以及方法的形参
作用范围:在方法中,定义之后的位置可以访问
出生:执行到定义语句
死亡:对应代码块执行结束或方法执行结束

类变量(类变量、静态变量)

定义:static修饰的属性
作用范围:类变量定义之后,或类名直接调用
出生:jvm启动,类被加载时,分配空间初始化
死亡:jvm关闭或类被卸载

内存位置

1、基本类型的局部变量:存放在线程栈上
2、引用对象的局部变量:引用存放在线程栈上,对象本身存在于堆内存上
3、包含方法的对象,这些方法包含的局部变量仍然存放在线程栈上,即便这个对象存放在堆上
4、对象的成员变量(属性)跟随对象,存放在堆内存中,不管是基本数据类型还是引用数据类型
5、静态成员变量跟随类定义存放在堆上
6、存放在堆上的对象可以被所有持有这个对象的线程访问。当一个线程访问该对象时,它可以访问这个对象的成员变量。如果多个线程同时调用这个对象的同一个方法,他们都将会访问这个对象的成员变量。但是每个线程都有这个成员变量的拷贝。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值