java 变量名存储在哪里

如inta=3中的a存储在哪里?内存中会为3开辟一个空间,但是a怎么办?首先感谢大家,但是大家好像没有明白我的意思,我是说那个表示a要不要另外开辟存储空间,而不是为a赋的... 如int a = 3中的a存储在哪里?内存中会为3开辟一个空间,但是a怎么办?
首先感谢大家,但是大家好像没有明白我的意思,我是说那个表示a要不要另外开辟存储空间,而不是为a赋的值3.
展开
 我来答
crf019
2008-12-23 · TA获得超过135个赞
知道答主
回答量:86
采纳率:0%
帮助的人:83.4万
展开全部
JAVA里不必考虑这东西,因为JAVA的堆栈和指针都是程序自动完成的,简单的说一下吧。
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
对int a = 3:
编译器首先会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址
硬木花道09G
2008-12-25 · TA获得超过858个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:131万
展开全部
首先声明一下一楼说的观点有误,对于栈和堆这里就不说了。
对于基本类型数据来说:
1) 局部变量
$范围:定义在一个方法内部的变量;
$作用域:其作用域为所在代码块,也称为临时变量、栈变量;
$生命周期:从创建开始到方法(函数)结束为止;
$特点:在使用之前必须要对其初始化;
$一律存放在栈中。
2) 实例变量
$范围:定义在一个类内部但不在方法中的变量;
$作用域:其作用域为整个类,能够被操作的范围是类的内部;
$生命周期:对象被创建的时候开始,对象被垃圾回收的时间结束;
$特点:如未定义其初值,系统会自动对实例变量进行默认初始化(默认值为null),使用之前必须创建类的实例;
$每一个对象的实例变量的值是相互独立的;
$一律存放在堆中。

对于复杂类型来说:
引用存放在栈中,而其所指向的值存放在堆中。

回答补充:我的以上陈述已经回答了你的问题,是你没有看懂而已,当然不用了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
区伯顿法
2020-09-08
知道答主
回答量:4
采纳率:0%
帮助的人:2551
展开全部
变量名只是方便程序员编程用的,它实际上就是表示变量的存储地址。在编译后是没有变量名的,全部都是用地址来替代。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听说今天
2015-11-12
知道答主
回答量:1
采纳率:0%
帮助的人:1187
展开全部

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
antolife
2013-07-15 · TA获得超过461个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:207万
展开全部

误人子弟。。。。。

楼主细细找找资料。。
基本类型没有引用,直接是值

误人子弟····
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式