老师讲的内容好像错了

来源:2-9 如何保证不添加重复商品进购物车

沉寂的蜗牛

2015-12-21 16:45

额。。。。老师好像讲错了,老师说:“new出来的两个对象hashcode一定不相同”,可是,new出两个的String类型的相同字符串,它们的hashcode是相同的呀。。。。。。

写回答 关注

10回答

  • 摩诃迦叶
    2016-08-15 10:48:40

    你们聊到哪去了。。。 new出两个的String类型的相同字符串,它们的hashcode是相同的原因是,String.class中重写了hashcode方法啊。。。。

    黑夜_K

    哈哈。。

    2017-10-14 08:38:57

    共 1 条回复 >

  • 沉寂的蜗牛
    2016-05-31 02:11:55

    第二点呢...每个人的知识都有漏洞吧,我不知道“字符串本身就是hashcode”,java应用hash算法是为了方便检索内存里的东西。这个暂且不说。你提的问题“两个相同值得String类型对象得到的hashcode是一样得”。这个呢,下面截图有,第一张是jdk的官方文档,虽然是汉化版的。我所说的一样是指字符串对象(s1,s2)引用调用hashcode()方法返回的值是一样的。而第一张截图上说了,返回的是此对象的哈希码值。自然就是String对象的哈希码值,也即是堆中存储的String对象的哈希码值。不是你说的String值得哈希码。够清楚的吧...第三点,慎用网络用语:“呵呵”,“逗逼”,对陌生人用,这就是骂人的话,而不是调侃。还有什么疑问欢迎提出...

    574c800e0001313b05000202.jpg

    574c800e000170cb05000382.jpg


  • 小小徐life
    2016-05-30 19:50:59

    http://img.mukewang.com/574c29110001133712900462.jpg再看看这个

    mjka56... 回复沉寂的蜗牛

    太牛了!看完之后,感觉你们好厉害!崇拜

    2016-08-11 23:32:02

    共 3 条回复 >

  • 小小徐life
    2016-05-30 18:59:50

    如果是String类型的  要通过调用字节数组     显示 字符串的hashcode 

  • 小小徐life
    2016-05-30 18:51:00

    http://img.mukewang.com/574c1afe00016f8509140266.jpg大哥  我还是没理解  你最后的那句话  “两个相同值得String类型对象得到的hashcode是一样得.”  就话的hashcode  指的是那种hashcode  ;你这就话有两种hashcode    第一种是对象指向的对象的值的地址的hashcode   ;第二种是对象指的hashcode。  你以前说的hashcode是第一种  我也知道String是类  但String也是基本数据类型   字符串本身就是hashcode  

  • 小小徐life
    2016-05-29 18:11:33

    可是,new出两个的String类型的相同字符串,它们的hashcode是相同的呀。。。。。。    这只是你的理解而已  老师并没有说这就话  如果老师说这句话 那它重写hashcode()  就行  干嘛重写equals()判断对象的值是否相同

    写个hashcode()判断他们引用的地址就行了呀!对不对    别一天天的说 源代码源代码 你看了就真的以为你把源代码理解了?  还是好好想想老师为社么这样写

    小小徐lif... 回复沉寂的蜗牛

    大哥 我还是没理解 你最后的那句话 “两个相同值得String类型对象得到的hashcode是一样得.” 这句话的hashcode 指的是哪种hashcode ? 你这句话有两种hashcode 第一种是对象指向的对象的值的地址的hashcode ;第二种是对象值的hashcode。 你以前说的hashcode是第一种 我也知道String是类 但String也是基本数据类型 字符串本身就是hashcode

    2016-05-30 18:54:46

    共 7 条回复 >

  • 小小徐life
    2016-05-29 17:55:13

    老师的意思是 对象的值的哈希码相同  属性的值  值  值呀  哥哥呀 字符串本来就是用哈希码表示的的呀     老师前面说的第一个哈希码表示的是 对象的引用地址呀   第二个哈希码说的是对象引用地址里面对应的属性(字符串)的哈希码  你确定你真的了解引用传递么  栈空间里面放的是对象  堆空间里面才是属性  栈空间里的哈希码只是表示地址  而堆空间的哈希码才是表示真正的值  就算你看再多的源代码 理解能力差  又有什么用呢?

  • 沉寂的蜗牛
    2016-05-29 13:34:03

    还是自己来回答吧:查了下资料,new出来的两个对象正常情况是不相同的,但如果超出了int类型的范围,那么就至少有两相同。那么问题来了,new两个相同的字符串对象为什么他们的hashcode相同呢,这要看String类型的源码了,源码的意思基本上就是比较String对象的value值,值相同就相同。回过头去,不是说new出来的两个对象哈希值不相同吗,额......感觉都是在扯淡,没见官方文档说new出来的两个对象hashcode就一定相等啊。

  • 沉寂的蜗牛
    2015-12-23 16:43:00

    后面的一种,不信你可以试试。。。

    小小徐lif... 回复沉寂的蜗牛

    还有 老师什么时候说了这句话 可是,new出两个的String类型的相同字符串,它们的hashcode是相同的呀。。。。。。

    2016-05-29 17:45:22

    共 4 条回复 >

  • Caballarii
    2015-12-21 16:58:58

    String s="abc"这种还是String s=new String("abc")

    沉寂的蜗牛

    后面的一种,不信你可以试试。。。

    2015-12-23 16:43:31

    共 1 条回复 >

JAVA遇见HTML——Servlet篇

本门课程在JSP课程的基础上,深入介绍Servlet的基础知识

160615 学习 · 1029 问题

查看课程

相似问题