A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

浅易

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 浅易 初级黑马   /  2015-10-26 01:40  /  605 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

equals和==在Object中不是一样的吗?为什么比较字符串要用

4 个回复

倒序浏览
一个是比较地址,一个是比较内容
回复 使用道具 举报
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方法,只是这个用来比较字符串更合适一点
回复 使用道具 举报
比较字符串 内容用 String类重写的equals方法, 如果 比较字符串的内存地址,用==
回复 使用道具 举报
判断字符串的内容相等的话用equals,如果要比较地址相等的话就要用==
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马