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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhanghuxin 中级黑马   /  2013-11-17 10:57  /  879 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求指点:"=="和equals方法究竟有什么区别?

评分

参与人数 1黑马币 +3 收起 理由
狼王 + 3

查看全部评分

2 个回复

倒序浏览
关于这样的问题,百度上挺多的,可以百度一下http://blog.csdn.net/yangliu9420/article/details/5480444
回复 使用道具 举报


“==”比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆内存中存储的地址是否相同,即栈内存中的引用地址是否相同。
equals()表示两个变量是否是对同一个对象的引用,即堆内存中的内容是否相同。

“==”比较的是两个对象在堆内存中的地址,而equals()比较的是两个对象的内容。
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str1 = new String("abc");
  6.                 String str2 = new String("abc");

  7.                 System.out.println(str1==str2);  //false

  8.                 System.out.println(str1.equals(str2));  //true
  9.         }
  10. }
复制代码
由于str1和str2是两个不同的对象,所以它们在内存中的地址肯定也是不同的,所以表达式str1==str2返回的是false,而这两个对象中内容是相同的,都是“abc”,所以表达式str1.equals(str2)将返回true。

评分

参与人数 1黑马币 +4 收起 理由
枫儿 + 4

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马