java里String 和StringBuffer的区别

本文探讨了 Java 中 String 类型的不可变特性。解释了为何直接修改 String 对象会创建新的对象而不是改变原有对象,同时展示了字符串拼接过程中涉及的对象创建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String s = "sss"; 不可变是说对象new String("sss")是不可变的,你写s="ddd",创建了一个新的new String("ddd")对象,并让引用s 指向这个对象的地址,原来的sss被就被抛弃了。

String s = "sss";
s+= "ddd";
这样也是可以的,是不是s也是可变的呢?
实际上JVM是生成了一个临时对象BufferString,将两个字符串拼接后再保存为新对象,然后将引用s指向新对象。

在这一个简单的一次拼接过程中,我们让程序创建了四个对象:两个待拼接的String,一个临时StringBuffer,和最后将StringBuffer转型成为的String--它当然不是最初的sss了,这个引用的名称没变,但它指向了新的String对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值