请问java里给成员变量赋值,那成员变量会在哪个内存空间里

 我来答
澈丶233
2019-10-19 · TA获得超过169个赞
知道小有建树答主
回答量:446
采纳率:94%
帮助的人:107万
展开全部
jvm内存包括堆、栈和方法区,对象本身是被丢到堆里的,所以成员变量是跟着一起放到堆中,只有局部变量才会入栈区。
更多追问追答
追问
在没有被创建对象初始化时,直接在类里面给成员变量赋值,并且用静态方法static修饰。那赋的这个值 不开辟空间嘛?
追答

其实我也是网上查的,我之前也只是简单的了解过因为实际开发中确实很少用到。

据说静态成员变量是直接丢到方法区的,也就是在方法区开辟空间咯。

又看到一篇博客你也瞅瞅呗

百度网友495d8a8
2019-12-31 · 超过11用户采纳过TA的回答
知道答主
回答量:75
采纳率:80%
帮助的人:18.7万
展开全部
根据变量类型,
基本类型(float,double,char,byte,short,int,long,boolean)值是放在方法区的常量池(方法区有一个数组,用来存放1,2,3,4, true,false,'a','b'这种基本类型值),变量本身放在栈,指向常量池的值。
引用变量实体是放在堆中(比如String,各种class等),变量放在栈,变量指向值的位置。

static修饰的值也会开辟空间,只不过加载顺序提前了,会在这个类被加载时一开始就被加载。而且static主要用途是静态,比如你class A中有一个变量a, 你设为static后,
你 new 两个 A的对象, A1 和 A2, 这两个对象的a是指向了同一个空间,也就是你A1.a = 1,那么A2.a 也会变成 1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式