String 和 StringBuffer 的区别


String 是一个不可变类,其对象在创建后无法修改,但可以引用其他对象。它们在多线程环境中非常有用,因为多个线程无法更改对象的状态,因此不可变对象是线程安全的。

StringBuffer 是可变类,可用于对字符串对象进行操作,例如字符串反转、字符串连接等。我们可以修改字符串而无需创建字符串的新对象。StringBuffer 也是线程安全的。

此外,字符串连接 + 运算符内部使用 StringBuffer 或 StringBuilder 类。以下是差异。

序号关键点StringStringBuffer
1
基础
String 是一个不可变类,其对象在创建后无法修改
StringBuffer 是可变类,可用于对字符串对象进行操作
2
方法
方法不是同步的
此类中的所有方法都是同步的。
3
性能
它很快
多个线程无法同时访问,因此速度较慢
4.
内存区域
如果使用构造函数或方法创建 String,则这些字符串将存储在堆内存和字符串常量池中
堆空间

String 示例

public class Main {
   public static void main(String args[]) {
      String s1 = "Hello Tutorials Point";
      String upperCase = s1.toUpperCase();
      System.out.println(upperCase);
   }
}

StringBuffer 示例

public class StringBufferExample{
   public static void main(String[] args){
      StringBuffer buffer=new StringBuffer("Hi");
      buffer.append("Java 8");
      System.out.println("StringBufferExample" +buffer);
   }
}

更新于: 2020-09-09

12K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告