java中的valueOf()返回Object但为什么hashcode不存在?

时间:2015-02-18 11:18:45

标签: java string return-value-optimization

Integer.valueOf的API(" 123")返回一个对象..所以,如果我正在写这个

System.out.println(Integer.valueOf("456"));System.out.println(String.valueOf(256));

这些应该给我对象的哈希码,而是打印简单值456和256。

所以任何人都可以解释为什么而不是哈希码我得到的值

谢谢:)

2 个答案:

答案 0 :(得分:3)

由于IntegerString会覆盖toString()方法。

Integer的hashCode也是它的int值:

/**
 * Returns a hash code for this {@code Integer}.
 *
 * @return  a hash code value for this object, equal to the
 *          primitive {@code int} value represented by this
 *          {@code Integer} object.
 */
public int hashCode() {
    return value;
}

答案 1 :(得分:1)

IntegerString覆盖toString(),这就是为什么您没有获得Object的默认实现。

字符串&#39s toString:

public String toString() {
    return this;
}

整数toString:

public String toString() {
    return String.valueOf(value);
}