String 和 StringBuffer 的区别
String 是一个不可变类,其对象在创建后无法修改,但可以引用其他对象。它们在多线程环境中非常有用,因为多个线程无法更改对象的状态,因此不可变对象是线程安全的。
StringBuffer 是可变类,可用于对字符串对象进行操作,例如字符串反转、字符串连接等。我们可以修改字符串而无需创建字符串的新对象。StringBuffer 也是线程安全的。
此外,字符串连接 + 运算符内部使用 StringBuffer 或 StringBuilder 类。以下是差异。
序号 | 关键点 | String | StringBuffer |
---|---|---|---|
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); } }
广告