为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕移动5083776 2017-05-18 08:10:07
每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法
查看完整描述

3 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

==比较的是两个对象的哈希值,而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
//比较字符串的内容


查看完整回答
反对 回复 2017-05-18
  • 慕雪6341044
    慕雪6341044
    你的这个程序是怎么弄上去的?我每次都得自己打
  • 望远
    望远
    提问和回答的时候左上角有一个代码语言的下拉列表,点开选择你要插入的代码类型,代码是自己敲上去的,这里只是帮你按语法格式高亮显示了而已。
?
sr_ll

TA贡献2条经验 获得超0个赞

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

查看完整回答
反对 回复 2017-05-18
?
leiqjl

TA贡献3条经验 获得超0个赞

每次new一个对象都在堆空间中分配一块内存,==比较的是两个对象的地址,string类重写了object的equals方法,先比较地址是否相同,再判断是否是string类,再比较每个位置上的字符是否相同。
查看完整回答
反对 回复 2017-05-18
  • 3 回答
  • 0 关注
  • 1702 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信