java如何清晰区分String, StringBuilder和StringBuffer的应用场景

在这里插入图片描述

一、引进StringBuilder的原因
字符串类String是final限定类型,String str=“abc”+“bcs”;这句代码看似简单,但是代码运行时,实际上创建了3个字符串对象,分别是:“abs”,“bcs”,和“abcbcs”,如果这样的拼接数量不断增加,会是程序系统产生极大的性能消耗,因此要避免使用这样的方式修改字符串的内容。通常来讲,String的操作比较简单,但是由于String的不可修改特性,为了方便字符串的修改,提供StringBuild和StringBuffer类。

二、StringBuilder和StringBuffer区别:

String和StringBuffer最大的区别在于:String的内容无法修改,而StringBuffer的内容可以修改。频繁修改字符串的情况考虑使用StingBuffer
先来看一下StringBuilder的使用:

public class Test{
    
     
   public static void main(String[] args) {
    
     
      StringBuffer sb = new StringBuffer(); 
      sb.append("Hello").append("World"); 
      fun(sb); 
      System.out.println(sb); 
  } 
     public static void fun(StringBuffer temp) {
    
     
         temp.append("\n").append("www.bit.com.cn"); 
    } 
}

StringBuffer的每个方法多了一个Synchronized关键字,所以它是线程安全的,StringBuilder是线程不安全的。

多线程可以理解为:每一个跑道就是一个线程,多个选手再跑道上比赛就属于多线程场景。StringBuffer添加的Synchronized关键字,就相当于给跑道设置边界,不会出现比赛的选手跑到其他选手跑道而造成混乱的情况。

总结:String,StringBuilder和StringBuffer的区别:
1.String的内容不可修改,StringBuilder和StringBuffer的内容不可修改;
2.StringBuilder和StringBuffer的大部分功能是相似的;
3.StringBuffer采用同步机制,属于线程安全操作,而StringBuilder未采用同步机制,是线程不安全的。

猜你喜欢

转载自blog.csdn.net/m0_46551861/article/details/109578163