【问题标题】:Hashcode Of a String字符串的哈希码
【发布时间】:2012-08-23 01:14:07
【问题描述】:

当我们尝试使用toString() 打印任何对象时,我们会得到HashCode(如果toString() 未被覆盖)。但是,如果我想打印字符串变量的哈希码,我应该怎么做。 这个问题是关于 Java 的。

【问题讨论】:

  • “字符串变量的哈希码”是什么意思?为什么不能直接拨打hashCode()就可以了?
  • toString() 默认不只是打印 hashCode() 。如果这是你想要的,你最好打电话给hashCode()。注意:它可能不是唯一的。
  • 你没有得到哈希码,你得到了 objectId。
  • @JoeriHendrickx 那么 objectid 是什么,这不是标准的 Java 术语?
  • @PetarMinchev 没有这样的东西作为唯一的hashCode 实现,除了可能状态总数适合int 的对象。这样的物体非常罕见

标签: java string object


【解决方案1】:

只需在 String 对象上调用 hashCode()

String s = "Hello World";
System.out.println(s.hashCode());

如果你希望它的格式与Object.toString() 相同,试试这个:

System.out.println(Integer.toHexString(s.hashCode()));

【讨论】:

  • 更准确地说:s.getClass().getName() + "@" + Integer.toHexString(s.hashCode());
  • @assylias 当然是:"String@" + Integer.toHexString(s.hashCode()));
  • @Jesper:好的,hashCode() 是对象类的成员。谢谢。
【解决方案2】:
System.out.println("Some String".hashCode());

【讨论】:

    【解决方案3】:

    您可以通过调用hashCode() 方法获取任何Java 对象的哈希码。结果将是一个int,然后您可以使用它打印或做任何其他事情。

    如果您对Object.toString 的实现感兴趣,很容易在grepcode 处查看。它说:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    

    【讨论】:

      【解决方案4】:

      只需调用hashcode() 方法。来自Object

      String str = "mystring";
      System.out.println(str.hashCode());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-26
        • 2023-03-15
        • 1970-01-01
        • 2013-01-20
        • 2011-08-18
        • 1970-01-01
        • 2019-08-08
        • 2017-12-15
        相关资源
        最近更新 更多