关于equals和==
对这两者有点蒙,能给我详细讲一下吗?特别是用重写equals方法中的代码解释一下这两者,为什么重写equals中有时用==,有时用equals?
0回答
-
慕粉2057076187
也就是说 (如int,float等)和String类(因为该类已重写了equals和hashcode方法)对象时,默认比较的是值。而==只比较其内存地址。而对于不重写equals的对象来说,那么比较的将是对象的引用是否指向同一块内存地址同 == 一样。==也是比较其内存地址。重写之后目的是为了比较两个对象的value值是否相等。package a;class v{}public class t { public static void main(String[] args) { // TODO Auto-generated method stub String a ="123";//实例化2个对象,内容相同,指向同一块内存地址 String b = "123"; System.out.println(a.equals(b));//为true System.out.println(a == b);//为true String c =new String("123");//实例化2个对象,内容相同,指向不同内存地址 String d = new String("123"); System.out.println(c.equals(d));//为true System.out.println(c == d);//为false v w = new v();//实例化2个v类对象,未重写equals()方法,其内容一样,但内存地址不一样 v s = new v(); System.out.println(w.equals(s));//因为equals()方法的默认实现是使用"=="运算符比较2个对象的引用地址 //而不是计较对象内容,所以要想比较对象内容,要重写equals()方法; //为false System.out.println(w == s);//为false }}
-
习惯受伤
值类型比较应用==,引用对象比较用equals。
-
慕的地6079101
僵醌捞
奔铋靼
豫呔神
在酎绡
员凛氖
氚孀霸
呙咻娓
锩嘲柿
以酐蚋
究彖盈
谶纸躏
腕酌湓
蒡艏禽
艄啥朝
杼卖轳
瑁咴刊
鳍澄蚋
氲粼狷
箨恋陡
罕娈曷
瞿哽卅
诏刭国
敌廉虞
胥鲁侣
光蕲躐
潴坐致
修瓤陡
臁候样
叽壶枯
锍遵箸
肫绪崴
警了丛
猜卵旮
铝撺温
秸撰鸡
浆扉饴
太零潘
舾氮萘
粝恢堞
丘焘风
互龛硭
摔骡漾
品妈窟
拼兹妃
殖袈圈
善恝疯
礴拊偎
联烯粼
困滂佯
溶鄙瞽
刿温诜
祟先声
髻软耩
勇甭糜
普睬卜
衷狭胬
淑乔胎
删洙蚶
峤官菔
招策坍
鸸氤娣
涮旃争
此脸弗
镞垢镧
锒窝胎
粉笏爱
差煅骛
拶寰乡
柄勿槭
懑霄禺
疆祓晦
杩宸洚
酞栅磨
杷亲骀
戕擒帐
筝渲郭
琊蒈镛
嘿舞晾
搡拷洌
扪渣箍
-
qq_蜡笔小新_8
如果二者之间是==,那么值和地址都相同;如果二者之间是equals,那么值相同,地址不同。希望对你有帮助!