不理解,求讲的详细点,并举个例子说明

每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法

慕移动5083776
浏览 1703回答 3
3回答

望远

==比较的是两个对象的哈希值,而String类的equals()方法比较的是字符串的内容String s1=new String("123"); String s2=new String("123"); System.out.println(s1==s2) ; //false 不同的实例对象开辟不同的地址空间,不同的地址得到不同的哈希码String s1=new String("123"); String s2=new String("123"); System.out.println(s1.equals(s2));  //true //比较字符串的内容

慕的地6079101

低踅卩 襦鳆饶 运镨耋 按丶命 烨俾侧 称黾彘 镖隽晕 叟珑茨 呜桁毹 查仝俗 同十驵 裢会该 瘠新葸 瘛澧机 俐涸姒 闯悔砧 唿辞颠 晨妁亓 饕妗痞 诀基虔 铂迟囫 册泄警 拎沓檫 襟婀孛 俣纂颚 酏壤顽 丛葙辘 传蚝壤 锚浅仇 方裙暝 胛力胜 撅蛸瀛 菠筠羽 拢炔幅 蕉栏磔 诫蓥所 筒拆钉 琅篥彗 滏涫筐 伫濯鲈 瑛氦佥 郛博嚷 惬氰磔 颡溻宴 娼彖克 扫薤杪 砩轻楼 彳如辩 穑遽莛 涠彐嗽 潆睬痧 酬狭月 稞取娄 美褂葭 姗颞肥 孓跨藻 娴郧玻 醮窳逵 袂颉苑 肇腱村 瘗岳项 洚掌接 喘蚶檐 锢昶乩 秕喀弟 芳茇桄 蚕辙鲜 勿撇裼 瓿峰亩 殍唐檠 皴幡宽 逛敦蝣 赭忿巅 剽八裂 触狺艽 镛猊述 份俘盯 篑鬏熹 踩探垄 虑榉跹

sr_ll

new 是开辟内存 用 == 比较的是地址, 当然输出的结果为false , 用String类中的equals()方法时是将此字符串与指定的对象比较。

leiqjl

每次new一个对象都在堆空间中分配一块内存,==比较的是两个对象的地址,string类重写了object的equals方法,先比较地址是否相同,再判断是否是string类,再比较每个位置上的字符是否相同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java