这里可以通过反射改变String的value值。
import java.lang.reflect.Field;
public class ChangeString1 {
public static void main(String[] args) {
try {
String str1 = "abc";
String str2 = "xyz";
Class cl = str1.getClass();
Field field = cl.getDeclaredField("value");
field.setAccessible(true);
field.set(str1, str2.toCharArray());
System.out.println(str1);
String str3 = "abc";
System.out.println(str3);
} catch (Exception e) {
e.printStackTrace();
}
}
}
查看源码就是段代码修改了String的值
unsafe.putObjectVolatile(var1, this.fieldOffset, var2);