JAVA String类型的变量在内存中的分配情况

Strings1="abc";s1="def"+s1;和Strings2="abc"+"def"在内存上的分配情况是一样的吗?... String s1 = "abc" ;s1= "def"+s1 ;和String s2="abc"+"def"在内存上的分配情况是一样的吗? 展开
 我来答
x369201170
2013-06-28 · TA获得超过426个赞
知道小有建树答主
回答量:570
采纳率:0%
帮助的人:360万
展开全部
不一样.
Stirng s1="abc";会创建一个String对象.
s1="def"+s1;则会创建2个.因为String是不可变的.
String s2="abc"+"def";只会创建一次String对象.因为"abc"+"def"会被jvm优化成String s2="abcdef";您可以反编译一次class文件看看就明白了
mominister
2013-06-28
知道答主
回答量:27
采纳率:0%
帮助的人:16.9万
展开全部
不一样的,当你定义s1="def"+s1时,s1最初指向的"abc"已经跟s1脱离了引用关系,s1最后指向的是"defabc"这个字符串.的地址
s2是两个字符串拼接的,"abc","def"和结果"abcdef"指向不同的引用...

你如果不确定内存分配情况,可以用"=="判断一下,两个字符串的引用是否相同..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ylang888
2013-06-28 · TA获得超过133个赞
知道答主
回答量:9
采纳率:0%
帮助的人:5.7万
展开全部
它们都不一样。
String中有个字符串常量池的概念。你举的例可比性不强。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式