字符串是一个不可变的类,创建后不能修改其对象,但必须引用其他对象。它们在多线程环境中非常有用,因为多个线程无法更改对象的状态,因此不可变对象是线程安全的。
字符串缓冲区是可变的类,可用于对字符串对象执行操作,例如反向字符串,压缩字符串等。我们可以在不创建字符串新对象的情况下修改字符串。字符串缓冲区也是线程安全的。
另外,字符串concat +运算符在内部使用StringBuffer或StringBuilder类。以下是区别。
| 序号 | 键 | 串 | 字符串缓冲区 |
|---|---|---|---|
| 1 | 基本的 | 字符串是一个不可变的类,创建后不能修改其对象 | 字符串缓冲区是可变类,可用于对字符串对象进行操作 |
| 2 | 方法 | 方法不同步 | 所有方法都在此类中同步。 |
| 3 | 性能 | 快 | 多线程无法同时访问,因此速度很慢 |
| 4。 | 记忆区 | 如果使用构造函数或方法创建字符串,则这些字符串将存储在堆内存以及SringConstantPool中 | 堆空间 |
public class Main {
public static void main(String args[]) {
String s1 = "Hello nhooo.com";
String upperCase = s1.toUpperCase();
System.out.println(upperCase);
}
}public class StringBufferExample{
public static void main(String[] args){
StringBuffer buffer=new StringBuffer("Hi");
buffer.append("Java 8");
System.out.println("StringBufferExample" +buffer);
}
}