变量引用字符串的值

xde*_*000 0 java reference

如何获取字符串对象的引用值?

如果我喜欢上课

class T()
{
}
T t = new T();
System.out.println( t); 
Run Code Online (Sandbox Code Playgroud)

打印出T @ a3455467,它是t内的参考值

但是对于字符串?也许用方法hashCode()??

Arn*_*ter 5

你想要的是系统身份哈希.你可以通过以下方式获得:

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中并没有真正提供给公众.你不能将它转换为十六进制地址,并查看内存或类似的东西.