黑马程序员技术交流社区

标题: equals和== [打印本页]

作者: 浅易    时间: 2015-10-26 01:40
标题: equals和==
equals和==在Object中不是一样的吗?为什么比较字符串要用

作者: 耀阳圣尊    时间: 2015-10-26 10:09
一个是比较地址,一个是比较内容
作者: 黑夜中那颗星    时间: 2015-10-26 12:17
String str1 = "haha";  //“haha”这个是放在字符串常量池里面
String str2 = new String("haha");  //这里new了个对象,这样就在堆内存中了
System.out.println(str1==str2);   //==是比较内存地址的,false
——————————————————————————————————
String str1 = "haha";   //这里把"haha"放在了字符串常量池里面了
String str2 = "haha";  //jvm会在常量池里面对比是否有相同的字符串,如果有的话就直接把内存引用到之前的"haha"上面,而不会重新开辟空间,所以他们的内存地址是相同的
System.out.println(str1==str2);   //true
——————————————————————————————————
equals方法是比较对象中的内容,不是说字符串比较就一定要用equals方法,只是这个用来比较字符串更合适一点
作者: ageof    时间: 2015-10-26 16:50
比较字符串 内容用 String类重写的equals方法, 如果 比较字符串的内存地址,用==
作者: lixp    时间: 2015-10-27 19:17
判断字符串的内容相等的话用equals,如果要比较地址相等的话就要用==




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2