反射修改字符串内容
之前知道字符串的值不能被修改,今天学习了反射,于是尝试了一下结果修改成功了
不同的JDK版本使用不同的数组(当前是char数组)
代码如下:
public class de05 {
public static void main(String[] args) throws Exception {
String ss="111111";
Class reflect=ss.getClass();
Field f=reflect.getDeclaredField("value");
f.setAccessible(true);
char[] b=(char[]) f.get(ss);
System.out.println(ss+"的hashcode= "+ss.hashCode());
b[0]='A';
System.out.println();
System.out.println(ss+"的hashcode= "+ss.hashCode());
}
}
结果:
字符串被修改hashCode相同