巴扎黑2017-04-18 10:08:30
在java中判断String 使用 == 是判断两个对象的地址而不是hashCode。因为你这是两个 String 对象 ,因为你这两个都是使用new 的,所以使用 == 是 false。
巴扎黑2017-04-18 10:08:30
hashCode 和 == 是不一样的。 ==比较的是内存地址, 而hashCode是根据实例变量计算出来的。
你使用了new创建了两个String实例(new 关键字是会开辟新内存空间的),而不是直接引用string池中的“hello”,下面是此构造器的源代码。
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
而String的hash计算方法是根据上述代码中的value和hash。