首页 > 试题广场 >

以下代码输出结果为: class Main {  

[单选题]

以下代码输出结果为:

class Main
{
    public static void main(String[] args)
    {
        String obj1 = new String("nowcoder");
        String obj2 = new String("nowcoder");
 
        if(obj1.hashCode() == obj2.hashCode())
            System.out.println("object1 与 object2 哈希码相等");
 
        if(obj1 == obj2)
            System.out.println("object1 与 object2 内存地址一样");
 
        if(obj1.equals(obj2))
            System.out.println("object1 与 object2 值相等");
    }
}

  • object1 与 object2 哈希码相等
    object1 与 object2 值相等
  • object1 与 object2 哈希码相等
    object1 与 object2 内存地址一样
    object1 与 object2 值相等
  • object1 与 object2 哈希码相等
    object1 与 object2 内存地址一样
卧槽,看错了,怎么说的值相等?值相等一般说地址值,equals一般说内容相等
发表于 2019-10-24 20:34:36 回复(0)
String类中的hashCode计算方法还是比较简单的,就是以31为权,每一位为字符的ASCII值进行运算,用自然溢出来等效取模。
发表于 2020-02-25 12:37:07 回复(0)
把这块当做常量池了,实际上是一个全新的对象。如果是把obj1赋值给obj2的话,应该是三者全成立
发表于 2019-10-19 15:02:08 回复(0)