String
1、String 是 Java 中很常用的类之一
2、由于 String 是 final 修饰的,无法被继承。所以 String 不是 Java 的基本数据类型
3、字符串在 Java 中是不可变的,因此适合在多线程环境下使用
4、当我们使用双引号创建一个字符串时,如下:
String str1 = “ABC”;
JVM 首先在字符串池中寻找具有相同值的字符串,如果找到了,它将返回字符串池中的字符串对象的地址。否则,它会在字符串池中创建字符串对象并返回地址。JVM 通过在不同的线程中使用相同的字符串,节省了大量的内存。
字符串拼接StringBuffer和StringBuilder
由于 String 在 Java 中是不可变的,因此每当我们执行字符串拼接操作时,它都会生成一个新的 String 并丢弃旧的 String 以进行垃圾收集。
这些重复的操作会在堆中产生大量垃圾冗余,所以Java提供StringBuffer 和 StringBuilder 类,用于字符串操作。
StringBuffer 和 StringBuilder 是 Java 中的可变对象。
StringBuffer
1、优点:线程安全。缺点:所有方法同步,以性能为代价
2、在 Java 1.4 之前,StringBuffer 是字符串操作的唯一选择
StringBuilder
1、优点:所有方法非同步。缺点:线程非安全
2、在大多数情况下,我们不会在多线程环境中使用 String。所以 Java 1.5 引入了一个新类 StringBuilder