面试记录之string和StringBuilder 的区别

String是不可变类,每次修改都会创建新对象,适合少量操作;StringBuilder是可变类,适合频繁修改,减少内存消耗。String利用常量池优化,StringBuilder不使用。选择取决于字符串操作频率。
摘要由CSDN通过智能技术生成

1.String 是不可变类,即一旦被创建就不能被修改;而 StringBuilder 是可变类,可以动态调整内部字符序列的长度和内容。
2。在 String 类型场景下,每次修改字符串的值都会创建一个新的 String 类型的对象,并回收之前创建的 String 类型对象,这样会产生很多的无用对象,极大的消耗内存,而 StringBuilder 使用可变的字符数组来存储字符串,只需要调整字符数组的大小即可,避免频繁创建和回收对象,减小内存的消耗。
3.由于 String 类型对象被创建后不可改变,所以每修改一次都会产生一个新的字符串对象,这也是 String 对象的缺点之一,而因为 StringBuilder 类型是可变的,所以避免了每次修改都创建新的对象,因此在频繁修改字符串内容的场景下,StringBuilder 的性能比 String 要高。
4.String 使用的是常量池技术,当字符串被创建时,如果常量池中已经存在相同值的字符串,则不会创建新的字符串对象,而是直接引用已经存在的对象。而 StringBuilder 不使用常量池技术,每次都会创建新的对象。

因此,如果字符串只是要进行少量的添加或者是拼接,可以使用 String;如果经常要对字符串进行删除、插入、拼接等操作,就应该使用 StringBuilder。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值