java中声明一个字符串变量分别放在内存的哪些地方 比如说String a = "abc"

java中声明一个字符串分别放在内存的哪些地方比如说Stringa="abc";变量a放什么地方?栈?那a的指向的"abc"呢?... java中声明一个字符串分别放在内存的哪些地方 比如说String a = "abc"; 变量a 放什么地方?栈? 那a的指向的"abc"呢? 展开
 我来答
TragedyHome
2012-08-07 · TA获得超过2409个赞
知道小有建树答主
回答量:187
采纳率:100%
帮助的人:220万
展开全部
"abc"是分配在栈中的。

而a只是一个对象,一个指向存放"abc”栈的对象,分配在堆中。

许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“abc”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“a”,可以指向类型为String的任何对象,目前指向"abc"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
String string = a;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。
百度网友15ac334
2012-08-07
知道答主
回答量:39
采纳率:0%
帮助的人:18.5万
展开全部
a放在堆中,对应的是一个地址,
“abc”放在栈中,
其中a中的地址就是“abc”存放的位置
更多追问追答
追问
请问一下,内存一共分几个部分?
追答
堆,栈,还有存放一些临时变量的地方
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-07
展开全部
具体放在哪里我们不需要关心,那是jvm和操作系统需要关心的事

我们这么理解就可以了, jvm会在内存中开辟一块内存空间作为标识符列表,里面存储的是标识符名称(例如变量名、函数名、对象名等)、标识符类型、首地址……

首地址就是具体内容在内存中存放的位置

如果确实对jvm对内存的管理感兴趣,建议看《深入jvm》或者《java virtual machine》 这类介绍jvm的书,里面有jvm内存装载机制的介绍
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤斜月
2012-08-09
知道答主
回答量:4
采纳率:0%
帮助的人:6263
展开全部
“a ”放在堆里面,“abc”放在栈里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式