![](/img/trans.png)
[英]Where will be the newly created String? Heap memory or String constant pool?
[英]What is the difference between Heap memory and string constant pool in java
在Java中
我正在运行以下代码来检查哈希码。
String nameOne = "Deepak";
String nameTwo = new String("Deepak");
System.out.println("nameOne address -- "+nameOne.hashCode());
System.out.println("nameTwo address -- "+nameTwo.hashCode());
代码的输出是
nameOne address -- 2043177526
nameTwo address -- 2043177526
这两个对象都是使用new运算符和字符串文字创建的,并分别存储在堆内存和字符串常量池的不同位置。 然后内存地址如何相同。
如果我错了,请解释一下这个概念
比较堆和常量池是不正确的。 特别是使用hashCode
。
让我们一步一步走:
由于Java 7字符串池位于堆内存中。 阅读更多 。
Java中的HashCode与内存地址无关*
JVM具有用于指定hashCode默认算法的arg
-XX:hashCode=k
数字k
可能是以下之一:
字符串覆盖默认的hashCode
实现。 它基于字符串内容。 java.lang.String
:
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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.