java两个字符串使用+拼接字符串,在内存中是怎样实现的?

 我来答
198901245631
推荐于2017-11-27 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1673万
展开全部
你好:c存放内存,str存放内存,之后加好连接后指向一个新的内存存放reslut(str结果),new的话都会在堆中创建,在栈(Stack)中如果数值存在的话,就不会创建了。以下就是说明的+的实现过程,他实际上是new的,所以在堆中会创建,即占用新的内存,如果str不等于result的话,还会在栈(Stack)中创建。
str += "c";等效于:str = new StringBuffer(str).append("c").toString();
虽然编译器对字符串加号做了优化,它会用StringBuffer的append方法进行追加。再是通过toString方法转换成String字符串的。
它与纯粹的append方法是不同的:
一是每次都要创建一个StringBuilder对象;
二是每次执行完毕都要调用toString方法将其转换为字符串。
wcsfire234
2015-01-07 · TA获得超过672个赞
知道小有建树答主
回答量:737
采纳率:0%
帮助的人:221万
展开全部
String 对象 本质是char[] 对象相加 就是new了一个char[] 然后把这两个的值放进去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
發呆碼字員
2015-01-07 · TA获得超过331个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:260万
展开全部
String s="s",d="d";

s=s+d<----好像是建立一个吧
s=s.concat(d)<----这个是不改变内存位置

我记的没错好像是这样吧!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式