java String 内存地址问题?如何获取 String 内存地址!

2024-11-23 09:23:55
推荐回答(4个)
回答1:

hashCode()返回的是JVM中地址的哈希码,而不是JVM中的地址,要想得到str在物理内存中的真实地存,那只有用JNI技术调用c/c++去实现,否则无能为力,因为java超不出JVM,而JVM对物理内存地址是“不可见”的,否则java中不就有了指针,而去直接操作内存了,当然这是与java语言相违背的。这些只是我个人见解,说不定还真有高手直接用java语言得到了物理内存中的地址了呢。

回答2:

str.hashCode()不是str的jvm地址,String类的hashCode函数被重写了。

回答3:

jvm路过。。这就是正解了!

回答4:

这个是不可以的,String重写了Hashcode(),获取的并不是物理地址
/**
* Returns a hash code for this string. The hash code for a
* String object is computed as
*


* s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
*

* using int arithmetic, where s[i] is the
* ith character of the string, n is the length of
* the string, and ^ indicates exponentiation.
* (The hash value of the empty string is zero.)
*
* @return a hash code value for this object.
*/
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;

for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}