Java中的内存分配中字符串是如何存储的? [重复]

问题描述 投票:0回答:1

我很奇怪,因为即使我使用了 new() 方法来分配字符串。为什么我的两项任务都获得相同的位置?

String str3 = new String("AVI");
String str4 = new String("AVI");
System.out.println(str3.hashCode());
System.out.println(str4.hashCode());

输出: 65204 65204

PS: 我从这个网站读到了这个概念。 https://www.geeksforgeeks.org/g-fact-46/

我有什么错误吗?

java string memory-management
1个回答
0
投票

您的代码没有错误。 str3 和 str4 获得相同哈希码的原因是 Java 的字符串 hashCode() 方法基于其内容,而不是其内存位置。当您使用 new 创建字符串时,它们具有相同的内容(“AVI”),因此它们具有相同的哈希码。在这种情况下,Java 不会执行字符串驻留。

© www.soinside.com 2019 - 2024. All rights reserved.