java两个字符串使用+拼接字符串,在内存中是怎样实现的?
3个回答
展开全部
你好: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方法将其转换为字符串。
str += "c";等效于:str = new StringBuffer(str).append("c").toString();
虽然编译器对字符串加号做了优化,它会用StringBuffer的append方法进行追加。再是通过toString方法转换成String字符串的。
它与纯粹的append方法是不同的:
一是每次都要创建一个StringBuilder对象;
二是每次执行完毕都要调用toString方法将其转换为字符串。
展开全部
String 对象 本质是char[] 对象相加 就是new了一个char[] 然后把这两个的值放进去
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String s="s",d="d";
s=s+d<----好像是建立一个吧
s=s.concat(d)<----这个是不改变内存位置
我记的没错好像是这样吧!!!
s=s+d<----好像是建立一个吧
s=s.concat(d)<----这个是不改变内存位置
我记的没错好像是这样吧!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询