首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于String,该如何处理

2012-05-08 
关于StringJava codestatic void fun4(){String str1 abcString str2 new String(abc)System.ou

关于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

热点排行