一段代码证明为什么String会被设计成不可变的

Map<String,String> map = new HashMap<>();

String s = "Hello World";
String s1 = "Hello_World";
map.put(s,"111");
map.put(s1,"222");
System.out.println(map.toString());

Field valueFieldOfString = String.class.getDeclaredField("value");
valueFieldOfString.setAccessible(true);
char[] value = (char[]) valueFieldOfString.get(s);
value[5] = '_';
System.out.println(map.toString());

一段代码证明为什么String会被设计成不可变的