equals方法比较的是两个对象的哈希码,这么说对吗?

没有绝对的对错,如果你重装equals方法,让他去比较两个对象的哈希码来决定两个对象是否相同的话,那这么说就是对的了。否则的话是不能这么说的。
equals在原则上要和hashcode保持一致,即equals为真
两个对象hashcode应相同。
你之所以产生这个想法我想估计就这这样造成的。两个方法结果的一致性让你误以为是equals比较的是hashcode。
而在程序中真正的hashcode是和内存地址有关的,所以你可以想象每个对象的hashcode是不可能相同的,两个不一样的对象不能同时在一个内存地址上,这个肯定确保了不同对象的hashcod不同。
但是在实际运行中我们判断对象是否相同不需要那么严格,两个字符串内容一样我们就认为是相等了,而不去看他是不是在同一个内存地址上,所以这个时候我们就要重新写这个equals来达到当内容相同就返回true了,而不去管内存地址是不是一样了。。但是在很多map这类容器中判断对象是否相等则是同时比较equals和hashcode,所以为了保证这些重载过equals方法的类还能在这种情况下正常使用就规定了重载equals就一定要重载hashcode。这个也是为什么要求equals和hashcode一致性的原因。

  • java鐨equals鍜宑ontains鐨勫尯鍒
    绛旓細2銆佺敤娉曚笉鍚 equals瀹炵幇瀵硅薄涓婂樊鍒彲鑳芥ф渶澶х殑鐩哥瓑鍏崇郴锛涘嵆锛屽浜庝换浣曢潪绌哄紩鐢ㄥ x 鍜 y锛屽綋涓斾粎褰 x 鍜 y 寮曠敤鍚屼竴涓璞℃椂锛屾鏂规硶鎵嶈繑鍥 true锛坸 == y 鍏锋湁鍊 true锛夈俢ontains甯哥敤涓庨泦鍚堜腑鍒ゆ柇鏌愪釜瀵硅薄鏄惁鍚湁杩欎釜鍏冪礌銆3銆佸惈涔変笉鍚 equals鏄瘮杈冧袱涓涓滆タ鏄惁绛夊悓锛岄傜敤浜庝换浣曠被鍒殑瀵硅薄...
  • java涓彲浠ョ敤==鏉姣旇緝涓や釜瀛楃涓叉槸鍚︾浉绛夊悧
    绛旓細JAVA姣旇緝涓や釜瀛楃涓叉槸鍚︾浉绛夊彲浠ョ敤equals鏂规硶鎴栬呮槸鈥==鈥濄equals 鏂规硶甯稿父鐢ㄦ潵妫娴嬩袱涓璞℃槸鍚︾浉绛夛紝鍗充袱涓璞$殑鍐呭鏄惁鐩哥瓑锛屽鏋滃彧鏄瘮杈冨璞$殑鍐呭锛岃屼笉姣旇緝瀵硅薄鏉ユ簮鍜屽姛鑳界被鍨嬫椂锛屽父鐢ㄦ鏂规硶銆傗==鈥濆父鐢ㄤ簬鐢ㄤ簬姣旇緝寮曠敤鍜屾瘮杈冨熀鏈暟鎹被鍨嬫椂鏄惁鍏锋湁涓嶅悓鐨勫姛鑳斤紝姣旇緝鍩烘湰鏁版嵁绫诲瀷锛屽鏋滀袱涓肩浉鍚岋紝...
  • equals鍜==鐨勫尯鍒
    绛旓細==鏄竴涓瘮杈冭繍绠楃锛屽熀鏈暟鎹被鍨姣旇緝鐨勬槸鍊硷紝寮曠敤鏁版嵁绫诲瀷姣旇緝鐨勬槸鍦板潃鍊笺傦紙姣旇緝鍦板潃鍊煎嵆鏄寚鏄惁涓哄悓涓涓璞$殑寮曠敤锛equals()鏄竴涓鏂规硶锛屽彧鑳芥瘮杈冨紩鐢ㄦ暟鎹被鍨嬨傞噸鍐欏墠姣旇緝鐨勬槸鍦板潃鍊硷紝閲嶅啓鍚庢瘮涓鑸槸姣旇緝瀵硅薄鐨勫睘鎬с
  • java閲equals鍜宧ashCode涔嬮棿浠涔堝叧绯
    绛旓細渚嬪set闆嗗悎锛屽畠鐨勪笉鍙噸澶嶏紝杩涜瀵规瘮鐨渚挎槸hashcode鏄惁鐩哥瓑锛屽洜姝et闆嗗悎瀹炵幇浜嗕笉鍙噸澶嶃傚鏋滄牴鎹 equals(Object) 鏂规硶锛涓や釜瀵硅薄鏄浉绛夌殑锛岄偅涔堝杩欎袱涓璞′腑鐨勬瘡涓璞¤皟鐢 hashCode 鏂规硶閮藉繀椤荤敓鎴愮浉鍚岀殑鏁存暟缁撴灉銆傚嵆浣夸袱涓猦ashCode()杩斿洖鐨勭粨鏋滅浉绛夛紝涓や釜瀵硅薄鐨equals鏂规硶涔熶笉涓瀹氱浉绛夈
  • 5.绠杩扳溾濆拰鈥 equals ()鏂规硶鈥濈殑鍖哄埆銆(20鍒)
    绛旓細涓嬮潰鏄疧bject绫讳腑equals鏂规硶鐨瀹炵幇锛氬緢鏄剧劧锛屽湪Object绫讳腑锛equals鏂规硶鏄鐢ㄦ潵姣旇緝涓や釜瀵硅薄鐨勫紩鐢ㄦ槸鍚︾浉绛夛紝鍗虫槸鍚︽寚鍚戝悓涓涓璞°備絾鏄湁浜涙湅鍙嬪張浼氭湁鐤戦棶浜嗭紝涓轰粈涔堜笅闈竴娈典唬鐮佺殑杈撳嚭缁撴灉鏄痶rue锛焢ublic class Main { /*** @param args */public static void main(String[] args) { // T...
  • C#鍒濆鑰呭Equals鏂规硶鐨鍑犱釜甯歌璇В
    绛旓細鍘熷垯涓婃潵璇达紝鍙鎴戜滑娌℃湁閲嶅啓涓涓被鐨Equals鏂规硶锛岄偅涔堝畠灏变細缁ф壙鍏剁埗绫荤殑瀹炵幇锛岃岀埗绫绘槸娌℃湁鏈轰細浣跨敤瀛愮被鍨嬬殑鎿嶄綔绗﹂噸杞界殑銆傚悓鏍凤紝鍙鎴戜滑娌℃湁鍦ㄤ竴涓被鐨==鎿嶄綔绗﹂噸杞戒腑璋冪敤Equals鏂规硶锛屽畠鏄笉浼氳嚜鍔ㄨ皟鐢ㄧ殑銆傝瑙d笁锛氬肩被鍨嬬殑榛樿Equals瀹炵幇鏄涓や釜瀵硅薄杩涜閫愪綅姣旇緝鐨銆傛湁浜涗汉璁や负鍊肩被鍨嬬殑Equals...
  • ...鑾峰彇浜嗕慨鏀瑰墠鍜屼慨鏀瑰悗鐨勫璞,鐒跺悗闇瑕佸涓や釜瀵硅薄杩涜瀵规瘮_鐧惧害...
    绛旓細鍥炵瓟锛equals鏂规硶鏄鐢ㄦ潵姣旇緝涓や釜瀵硅薄鏄惁鐩哥瓑,鍙細杩斿洖true鎴杅alse銆傚鏋滄兂鐭ラ亾鏈夊摢浜涘睘鎬ф敼鍙樹簡,鍙互鑷畾涔変竴涓柊鐨勬柟娉,鍦ㄦ柊鏂规硶閲屽涓や釜瀵硅薄鐨勫睘鎬ц繘琛屾瘮杈,鐒跺悗灏嗘湁淇敼鐨勫睘鎬у悕鏀惧叆鏁扮粍閲岃繑鍥炲氨琛屼簡銆
  • equals閭d釜浠g爜杩欐牱鍐欎富瑕佹槸鎯宠〃杈句粈涔堜负浠涔堣杩欐牱鍐?
    绛旓細鍦↗ava涓紝姣忎釜绫婚兘鏈変竴涓粯璁ょ殑equals鏂规硶锛岀敤浜庢瘮杈冭绫荤殑瀵硅薄銆備絾鏄紝濡傛灉鎮ㄩ渶瑕佽嚜瀹氫箟绫绘潵姣旇緝涓嶅悓绫诲瀷鐨勫璞★紝鎮ㄩ渶瑕佸疄鐜癳quals鏂规硶骞跺湪鍏朵腑缂栧啓鑷繁鐨勯昏緫鏉ユ瘮杈冨璞°備緥濡傦紝鍋囪鎴戜滑鏈変竴涓狿erson绫伙紝鍏朵腑鍖呭惈濮撳悕鍜屽勾榫勫睘鎬с傛垜浠笇鏈姣旇緝涓や釜Person瀵硅薄鏄惁鐩哥瓑銆傚鏋滃畠浠殑濮撳悕鍜屽勾榫勯兘鐩稿悓锛屽垯瀹冧滑鏄...
  • ==鍜equals鏂规硶绌剁珶鏈変粈涔堝尯鍒?
    绛旓細瀵逛簬鎸囧悜瀵硅薄绫诲瀷鐨勫彉閲忥紝濡傛灉瑕佹瘮杈冧袱涓彉閲忔槸鍚︽寚鍚戝悓涓涓璞★紝鍗宠鐪嬭繖涓や釜鍙橀噺鎵瀵瑰簲鐨勫唴瀛樹腑鐨勬暟鍊兼槸鍚︾浉绛夛紝杩欐椂鍊欏氨闇瑕佺敤==鎿嶄綔绗﹁繘琛屾瘮杈冦傗equals鈥濓細鏂规硶鏄鐢ㄤ簬姣旇緝涓や釜鐙珛瀵硅薄鐨勫唴瀹规槸鍚︾浉鍚岋紝灏卞ソ姣斿幓姣旇緝涓や釜浜虹殑闀跨浉鏄惁鐩稿悓锛屽畠姣旇緝鐨勪袱涓瀵硅薄鏄嫭绔嬬殑銆備緥濡傦紝瀵逛簬涓嬮潰鐨勪唬鐮侊細Stringa...
  • equal 鍜 == 鐨勫尯鍒
    绛旓細equals锛歟quals鐢ㄦ潵姣旇緝鐨勬槸涓や釜瀵硅薄鐨勫唴瀹规槸鍚︾浉绛夛紝鐢变簬鎵鏈夌殑绫婚兘鏄户鎵胯嚜java.lang.Object绫荤殑锛屾墍浠ラ傜敤浜庢墍鏈夊璞★紝濡傛灉娌℃湁瀵硅鏂规硶杩涜瑕嗙洊鐨勮瘽锛岃皟鐢ㄧ殑浠嶇劧鏄疧bject绫讳腑鐨勬柟娉曪紝鑰孫bject涓殑equals鏂规硶杩斿洖鐨勫嵈鏄==鐨勫垽鏂係tring s="abce"鏄竴绉嶉潪甯哥壒娈婄殑褰㈠紡,鍜宯ew 鏈夋湰璐ㄧ殑鍖哄埆銆傚畠鏄痡ava...
  • 扩展阅读:java equals ... 对象重写equals方法 ... equals方法和 的区别 ... string equals方法 ... equals方法使用与继承 ... 和 equals 的区别是什么 ... equal ... equals和双等号的区别 ... equals比较的是地址还是值 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网