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

2024-11-22 12:50:19
推荐回答(3个)
回答(1):

你好: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方法将其转换为字符串。

回答(2):

String 对象 本质是char[] 对象相加 就是new了一个char[] 然后把这两个的值放进去

回答(3):

String s="s",d="d";

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

我记的没错好像是这样吧!!!