调用java.lang.String immutable是否正确?
2022-09-03 12:55:56
这个Java教程说,不可变对象在创建后不能更改其状态。
java.lang.String
有一个字段
/** Cache the hash code for the string */
private int hash; // Default to 0
它在方法的第一次调用时初始化,因此它在创建后会更改:hashCode()
String s = new String(new char[] {' '});
Field hash = s.getClass().getDeclaredField("hash");
hash.setAccessible(true);
System.out.println(hash.get(s));
s.hashCode();
System.out.println(hash.get(s));
输出
0
32
调用不可变是否正确?String