一段代码搞懂String被final修饰的影响
首先,介绍一下
String、StringBuffer、StringBuilder的区别
String是final修饰的,不可变,每次操作都会产生新的String对象
StringBuffer和StringBuilder都是在原对象上操作
public class StringAndBuilderDemo {public static void main(String[] args) {StringDemo();System.out.println("************************");StringBuilderDemo();}public static void StringDemo(){String original = "hello"; // 创建一个 String 对象 "hello"System.out.println("Original: " + original);// 保存原始对象的引用String previous = original;// 修改字符串original = original.concat(" world"); // 创建一个新的 String 对象System.out.println("Modified: " + original); // 输出 "hello world"// 访问之前的对象引用System.out.println("Previous: " + previous); // 输出 "hello"}public static void StringBuilderDemo(){StringBuilder original = new StringBuilder("hello"); // 创建一个 StringBuilder 对象 "hello"System.out.println("Original: " + original);// 保存原始对象的引用StringBuilder previousBuilder;previousBuilder = original;// 修改字符串original.append(" world"); // 在原有对象上修改System.out.println("Modified: " + original); // 输出 "hello world"// 访问之前的对象引用System.out.println("Previous: " + previousBuilder); // 输出 "hello world"}
}