请问java里给成员变量赋值,那成员变量会在哪个内存空间里
2个回答
展开全部
根据变量类型,
基本类型(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.
基本类型(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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |