String类 可变or不可变
由String源码可知:
private final char value[];
String内容由字符数组存储,对于这个引用来说,它的指向(可理解为始终指向一个地址空间) 是immutable,但是指向的内容(可理解为地址空间存储内容) 是mutable。
//定义字符串
String waniz = "waniz come on!";
System.out.println(waniz);
//获取String字节码,并从字节码中获取字段value
Field valueFieldOfString = String.class.getDeclaredField("value");
//设置字段为可获取
valueFieldOfString.setAccessible(true);
//获取字段value的值
char[] value = (char[]) valueFieldOfString.get(waniz);
//修改原字符数组的值
value[0] = 'W';
System.out.println(waniz);