当前位置: 代码迷 >> J2SE >> 关于String,该如何处理
  详细解决方案

关于String,该如何处理

热度:60   发布时间:2016-04-24 01:06:55.0
关于String
Java code
    static void fun4(){        String str1 = "abc";String str2 = new String("abc");        System.out.println(str1.hashCode());        System.out.println(str2.hashCode());        if(str1 == str2) System.out.println("相同");        else System.out.println("不相同");    }

它的运行结果居然是:
96354
96354
不相同

小生不懂了,求哪位前辈指教!

------解决方案--------------------
探讨
但是他们的hashCode()是相等的,hashCode()得到的值不就是“等同于地址”(我的意思是hashCode与地址是一一对应的)吗?

------解决方案--------------------
你理解错了,或者你老师说错了。hashCode主要作用是快速判断两个对象的内涵是否相等。
------解决方案--------------------
有一定道理。新建两个空的Object对象,hashCode是不同,但是他们可能是根据内存地址转换的。
但是String重写了hashcode,你就要去看String的hashcode 是怎么来的。
可以自己尝试读源代码。
------解决方案--------------------
Java对象的equals()和hashCode()的使用 可以看看这个文章:http://blog.csdn.net/RichardSundusky/article/details/1508028
  相关解决方案