Java重写hashCode不会';不起作用
我正在重写hashCode方法,但是当我运行app时,它不会显示4。有什么问题吗?你只是做错了<代码>“java”。hashCode()只获取Java重写hashCode不会';不起作用,java,overriding,hashcode,Java,Overriding,Hashcode,我正在重写hashCode方法,但是当我运行app时,它不会显示4。有什么问题吗?你只是做错了“java”。hashCode()只获取字符串对象的哈希代码。如果要获取正确的哈希代码: 1) 重写hashCode方法 2) 使用重写的方法创建类的实例 3) 调用hashCode 诚实地重写hashCode可能是危险的,并导致效率降低。这就是为什么如果你不确定自己做得对,就不应该覆盖它。当您不确定最好的方法是始终在IDE(例如Eclipse)中生成它,这样可以正确地执行此操作。更改此选项: publ
字符串
对象的哈希代码。如果要获取正确的哈希代码:
1) 重写hashCode
方法
2) 使用重写的方法创建类的实例
3) 调用hashCode
诚实地重写hashCode可能是危险的,并导致效率降低。这就是为什么如果你不确定自己做得对,就不应该覆盖它。当您不确定最好的方法是始终在IDE(例如Eclipse)中生成它,这样可以正确地执行此操作。更改此选项:
public class mainB {
public mainB(){
System.out.println("java".hashCode());
}
@Override
public int hashCode() {
return 4;
}
public static void main(String[] args){
new mainB();
}
}
您正在重写
mainB
hashcode函数,但在使用“java.hashcode()
时使用了String
hashcode-one
要使用您的功能,您应该执行以下操作:
public mainB(){
System.out.println(this.hashCode());
}
您已经为类
mainB
定义了hashCode()
方法。因此,当您创建此类的对象并调用hashCode()
时,您将得到4个类似于:
new mainB().hashcode()
当你写以下内容时:
mainB myObject = new mainB();
System.out.println(" HashCode = " + myObject.hashCode());
您正在调用
String
实例上的hashCode()
方法 您正在显示包含单词“java”
的字符串的哈希代码。
将您的实现更改为
System.out.println(hashCode())代码>
您的hashCode()
也会被调用。而且“java”是临时的,然后会被垃圾收集,所以您不能再次使用它,对吗?@tuğrulbüyükıkık Well String hashCode在组成字符串的字符上应该是一致的。所以你也会有同样的感觉。
System.out.println("java".hashCode());