如何获取字符串对象的引用值?
如果我喜欢上课
class T()
{
}
T t = new T();
System.out.println( t);
Run Code Online (Sandbox Code Playgroud)
打印出T @ a3455467,它是t内的参考值
但是对于字符串?也许用方法hashCode()??
你想要的是系统身份哈希.你可以通过以下方式获得:
int id = System.identityHashCode(t);
Run Code Online (Sandbox Code Playgroud)
默认实现Object.toString()是:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Run Code Online (Sandbox Code Playgroud)
在默认的实现Object.hashCode()是System.identityHashCode().
但是系统身份哈希码也只是为同一个实例保持不变(甚至还不是唯一的).这不一定是参考值 - 无论这在jvm实现中是什么.真正的参考值是不透明的,在java中并没有真正提供给公众.你不能将它转换为十六进制地址,并查看内存或类似的东西.