String,StringBuffer以及StringBuilder的区别

本文详细对比了Java中String、StringBuilder和StringBuffer的性能差异,解释了String不可变性导致的效率问题,以及StringBuilder和StringBuffer如何通过直接操作对象提高效率。同时,分析了两者在线程安全上的区别。

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

首先给出运行速度的比较 :StringBuilder > StringBuffer > String

  • String
    String是一个字符串常量,也就是说String一旦创建之后是不能更改的。在下面的代码中看似字符串s被修改了,但其实系统是新建了一个s,然后将原来的s加上字符串"money"赋值给这个新建的s,然后将原来的s回收掉,从而来达到字符串修改的目的。所以,对String类型字符串的操作就是不断的新建对象并且回收旧对象的过程,执行速度很慢。
		String s = "i got ";
		s = s + "money";
		System.out.println(s);
  • StringBuffer和StringBuilder
    StringBuffer和StringBuilder 都是字符串变量,对这两种类型的字符串进行操作是直接对该对象进行操作,不涉及对象的新建和回收,执行速度较快。另外声明对象不能像上面String示例代码一样,可以通过下面两种方式进行变量的声明。
		StringBuffer s1 = new StringBuffer();
		StringBuilder s2 = new StringBuilder("kk");
  • StringBuffer和StringBuilder有什么区别 ?
    这两者的区别是相对于线程安全来说的,StringBuffer是线程安全的,StringBuilder是线程不安全的,所以StringBuffer的速度要比StringBuilder慢一点。若程序是多线程的,就需要用到确保线程安全的StringBuffer,但是在单线程用StringBuilder就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值