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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荣右铭 中级黑马   /  2013-10-11 08:57  /  2063 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 荣右铭 于 2013-10-11 11:48 编辑

在比较字符串时,==运算符和string.equals方法有什么区别?
在比较时==是不是重载了equals方法?
似乎在java中这两者是不同的,但C#中呢?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

7 个回复

倒序浏览
== 比较基本数据类型是否相同,比较对象的时候看引用指向内存中的同一对象,内存地址。equals监测是两个对象是否相等,即值相等
回复 使用道具 举报
本帖最后由 面朝大海,春暖 于 2013-10-11 09:33 编辑

因为string.equals是从object类继承来的,比较的是两个对象,即比较引用对象,而==一般比较基本数据类型。。值类型。。
回复 使用道具 举报
Liu阳 发表于 2013-10-11 09:26
== 比较基本数据类型是否相同,比较对象的时候看引用指向内存中的同一对象,内存地址。equals监测是两个对 ...

百度里这样说
  "==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
  "equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

“同一个对象的引用“是啥意思,后面又说是内容相同,这不就矛盾了?
回复 使用道具 举报
荣右铭 发表于 2013-10-11 10:03
百度里这样说
  "==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的 ...

string a="s";
string b =a;
引用一样 内容一样
回复 使用道具 举报
Liu阳 发表于 2013-10-11 10:14
string a="s";
string b =a;
引用一样 内容一样

可不可能引用不同,而内容相同?
回复 使用道具 举报
本帖最后由 幸运儿见龙 于 2013-10-11 12:15 编辑

             int c = 1;
            float d = 1.0f;
            Console.WriteLine(c == d);
            Console.WriteLine(c.Equals(d));
  true    false    这样明显不  一个是int 类型 一个是float类型    值一样
回复 使用道具 举报
问题解决,结论:引用类型无论哪个都比较引用,值类型无论哪个都比较值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马