1.String 真的真的真的 "不可变 " 吗?
String str = “Hello Python”;
System.out.println(str); // Hello Python
Field field = String.class.getDeclaredField(“value”);
field.setAccessible(true);
char[] value = (char[])field.get(str);
value[6] = ‘J’;value[7] = ‘a’;value[8] = ‘v’;value[9] = ‘a’;value[10] = ‘!’;value[11] = ‘!’;
System.out.println(str); // Hello Java!!
通过反射,我们改变了底层的字符数组的值,实现了字符串的 “不可变” 性,这是一种骚操作,不建议这么使用,违反了 Java 对 String 类的不可变设计原则,会造成一些安全问题。
天杀的string
最新推荐文章于 2021-12-18 09:54:35 发布