String,StringBuffer,StringBuilder的一些区别

本文介绍了Java中String,StringBuffer,StringBuilder的区别,重点分析了它们在字符串操作上的性能表现,以及在多线程环境下的适用性。通过示例代码展示了这三种类型在作为方法参数时的行为差异。

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

JAVA中String,StringBuffer,StringBuilder是有一些区别的;String主要应用在简单地保存一个字符串,逐步地遍历字符串,但其执行删除,修改,插入的操作时就有些麻烦;此时我们请出后两者,如StringBuffer,StringBuilder;说起后两者StringBuffer,StringBuilder主要在删除,修改,插入操作方面比String强,StringBuffer主要可以支持线程安全,可以同步,应用在多线程,游刃有余。而StringBuilder不支持线程安全,因而不可以同步,但它比StringBuffer速度快,它们刚好与String在性能上各有千秋。JDK 文档均推荐使用StringBuilder,但我本人推荐使用StringBuffer,因为有了它,操作字符串就更加方便,更重要的是支持同步机制,因此牺牲一点内存空间也是值得的。


 另外还有,String,StringBuffer,StringBuilder这三者还有一些区别就是这三者均以值参数形式传递,只不过在传递过程中,Sting仍然以值传递,调用方法后其值不会发生变化,而StringBuffer,StringBuilder耍了点诡计,以值对象传递,调用方法后其值会发生变化。这点符合JAVA的相关设计规范。以下以代码范例说明这一点。


  
public class Test {
 public static void println(String str,StringBuffer strBuffer,StringBuilder strBuilder)
 {
  str="以String方式输出Apple";
  strBuffer.append("以StringBuffer方式输出Apple");
  strBuilder.append("以StringBuilder方式输出Apple");
 }


 public static void main(String[] args) 
 {
   String str="Apple";
   StringBuffer sbf=new StringBuffer(); 
   sbf.append("Apple");
   StringBuilder sbd=new StringBuilder();
   sbd.append("Apple");
   System.out.println("调用前str="+str+",sbf="+sbf+",sbd="+sbd);
   println(str,sbf,sbd);
   System.out.println("调用后str="+str+",sbf="+sbf+",sbd="+sbd);
 }
}
上述代码运行结果:


调用前str=Apple,sbf=Apple,sbd=Apple
调用后str=Apple,sbf=Apple以StringBuffer方式输出Apple,sbd=Apple以StringBuilder方式输出Apple

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值