StringBuffer与stringBuilder

本文探讨了Java中的StringBuffer和StringBuilder类,强调它们在字符串拼接时的区别。StringBuffer是线程安全的,适合多线程环境,而StringBuilder速度更快,适用于非多线程场景。在使用StringBuffer和StringBuilder时,应根据具体需求选择合适的方法。
摘要由CSDN通过智能技术生成

StringBuffer与stringBuilder

对于String的学习:

final 修饰了String类所以String类是无法被修改的,并且不是基本数据类型。

当我们用双引号创建一个字符串时,jvm首先在字符串常量池中找寻具有相同值的字符串如果找到了,他将返回字符串常量池中的字符串对象引用。否则就在常量池中创建字符串对象并返回引用。

如果使用new创建字符串就需要在堆中创建它。

拼接字符串

我们使用Spring进行字符串拼接时,它会生成一个新的String并丢弃旧的String。/

这些操作肯定会在堆中产生大量垃圾冗余。于是产生了Stringbuffer(始于1.0之后)与StringBuilder(始于1.5之后)类用于对字符串的操作。
摘录自:https://developer.aliyun.com/article/787097?accounttraceid=7ccd1e5925ac4bff8b9d2ada96ac4f4arrjy
Java 中 String 与 StringBuffer 和 StringBuilder 的区别:
在 Java 1.4 之前,StringBuffer 是字符串操作的唯一选择。但是,它的一个缺点是所有公共方法都是同步的。 StringBuffer 提供线程安全性,但以性能为代价。
在大多数情况下,我们不会在多线程环境中使用 String。所以 Java 1.5 引入了一个新类 StringBuilder,除了线程安全和同步之外,它与 StringBuffer 类似。

StringBuffer 有一些额外的方法,例如 substring, length, capacity, trimToSize 等。但是,这些不是必需的,因为 String 中也有所有这些。这就是为什么这些方法从未在 StringBuilder 类中实现的原因。
StringBuffer 是在 Java 1.0 中引入的,而 StringBuilder 类是在查看 StringBuffer 的缺点后在 Java 1.5 中引入的。

假设在单线程环境中或无关线程安全,要使用 StringBuilder。反之,使用 StringBuffer 进行线程安全的操作。

关于Spring的面试体

//第一题
String s1 = "abc";
String s2 = "xyz";
String s3 = s1 + s2;
String s4 = "abc" + "xyz";
String s5 = "zbcxyz";
System.out.println(s3 == s4); // false
System.out.println(s4 == s5); // true

s1、s2都在常量池中,而s3=s1+s2,s3不会放在常量池中(只有字面常量才会放在常量池中),所以s3放在堆中,s4是两个字面常量拼接,所以会放在常量池中,内容为“abcxyz”,s5创建时,现在常量池中找到了相同的,所以两者引用相同

所以s3和s4的引用不同,s4和s5的引用相同
原文链接:https://blog.csdn.net/weixin_42193813/article/details/107725927

//第二种
String s1 = "abc"
  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值