Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据它们的.equals()方法,s是相等的,那么它们应该返回相同的哈希代码。我想让我困惑的是,它们是两个不同的对象,但具有相同的哈希代码。根据经验法则,如果使用.equals方法使两个对象相等,则它们将具有哈希代码。事实上,他们是两个不同的对象,这让我很_Java_Eclipse_Object_Hashcode - Fatal编程技术网

Java 根据它们的.equals()方法,s是相等的,那么它们应该返回相同的哈希代码。我想让我困惑的是,它们是两个不同的对象,但具有相同的哈希代码。根据经验法则,如果使用.equals方法使两个对象相等,则它们将具有哈希代码。事实上,他们是两个不同的对象,这让我很

Java 根据它们的.equals()方法,s是相等的,那么它们应该返回相同的哈希代码。我想让我困惑的是,它们是两个不同的对象,但具有相同的哈希代码。根据经验法则,如果使用.equals方法使两个对象相等,则它们将具有哈希代码。事实上,他们是两个不同的对象,这让我很,java,eclipse,object,hashcode,Java,Eclipse,Object,Hashcode,根据它们的.equals()方法,s是相等的,那么它们应该返回相同的哈希代码。我想让我困惑的是,它们是两个不同的对象,但具有相同的哈希代码。根据经验法则,如果使用.equals方法使两个对象相等,则它们将具有哈希代码。事实上,他们是两个不同的对象,这让我很困惑。救命啊!文档给出了计算字符串哈希值的公式。他们在计算中从不参考对象的参考。不知道为什么会投反对票。。。我甚至给出了确切的公式。:-)@不,链接给出了确切的公式。你没有。在此处包含直接回答问题的相关位,将链接保留为参考,或将其添加为注释。这


根据它们的
.equals()
方法,s是相等的,那么它们应该返回相同的哈希代码。我想让我困惑的是,它们是两个不同的对象,但具有相同的哈希代码。根据经验法则,如果使用.equals方法使两个对象相等,则它们将具有哈希代码。事实上,他们是两个不同的对象,这让我很困惑。救命啊!文档给出了计算字符串哈希值的公式。他们在计算中从不参考对象的参考。不知道为什么会投反对票。。。我甚至给出了确切的公式。:-)@不,链接给出了确切的公式。你没有。在此处包含直接回答问题的相关位,将链接保留为参考,或将其添加为注释。这基本上是一个仅链接的答案。@TarangHirani尝试执行
“String”。等于(新字符串)(“String”)
。。。它返回
true
,因此您所说的适用于这种情况:
两个使用equal方法相等的对象具有相同的hashCode
我想让我困惑的是,它们是两个不同的对象,但具有相同的hashCode。根据经验法则,如果使用.equals方法使两个对象相等,则它们将具有哈希代码。事实上,他们是两个不同的对象,这让我很困惑。救命啊!文档给出了计算字符串哈希值的公式。他们在计算中从不参考对象的参考。不知道为什么会投反对票。。。我甚至给出了确切的公式。:-)@不,链接给出了确切的公式。你没有。在此处包含直接回答问题的相关位,将链接保留为参考,或将其添加为注释。这基本上是一个仅链接的答案。@TarangHirani尝试执行
“String”。等于(新字符串)(“String”)
。。。它返回
true
,因此您所说的适用于这种情况:
两个使用equal方法相等的对象具有相同的hashCode
,但我的代码在不同的对象上计算hashCode方法,即str和strOne。我的逻辑正确吗?它们在
==
(参考)方面是不同的,但在
等于
(逻辑相等)方面是相同的,但我的代码在不同的对象上评估hashcode方法,即str和strOne。我的逻辑正确吗?它们在
==
(参考)方面不同,但在
等于
(逻辑相等)方面相同
public class Equality {

public static void main(String [] args)
{
    String str = "String";
    String strOne = new String("String");



    System.out.println(str == strOne);
    System.out.println(str.equals(strOne));

    System.out.println(str.hashCode());
    System.out.println(strOne.hashCode());

}
public int hashCode()
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
String str = "String";
String strOne = new String("String");  
public int hashCode() {
    int h = hash;
        int len = count;
    if (h == 0 && len > 0) {
        int off = offset;
        char val[] = value;

            for (int i = 0; i < len; i++) {
                h = 31*h + val[off++];
            }
            hash = h;
        }
        return h;
    }  
private final char value[];