在java中 String a = "ab"; String b = "a" + "b"; System.out.println(a==b); 的内存图解是怎样的?

 我来答
乌微月2S
2013-04-11 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2891万
展开全部
栈中一个a,字符串常量池中一个"ab"。a指向"ab"。
栈中一个b,b指向字符串常量池的"ab"。

"a" + "b"这个会有一个运算的过程,现在jdk1.5以后在编译器有个优化,会自动吧+替换成StringBuilder的append,运算之后会把“ab”的引用返给b。然后“a”,"b"会被回收。
黄师傅1号
2013-04-11
知道答主
回答量:30
采纳率:0%
帮助的人:7.1万
展开全部
"a"+"b"和"ab"都是常量,对编译器来说常量都会在编译过程中合并,即编译器会把String a="a"+"b";变成String a="ab";。所以编译出来的程序没有性能上的区别。

如果是两个变量相加情况就不一样了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-12
展开全部
丑了点~但是基本就是这个意思了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun772726098
2013-04-11 · 超过17用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:57.7万
展开全部
返回true啊
a 和 b 是指向同一个地址的
java 中 == 比较俩个对象的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式