http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5681|回复: 5

[总群] java和net两个对== 和equals 是否是一致的|C#传传看总群|2012-09-26|

[复制链接]
发表于 2012-9-26 12:04:18 | 显示全部楼层 |阅读模式
先是从 无法浏览网页(1250623166) 10:42:34 的提问开始
-------------------------------------------------------------------------------------------------------------------------------
无法浏览网页(1250623166) 10:42:34
string greeting ="Hello";
greeting.substring(0,3) == "Hel"  是true还是false?
无法浏览网页(1250623166) 10:42:34
string greeting ="Hello";
greeting.substring(0,3) == "Hel"  是true还是false?
瞌睡虫(719367804) 10:51:30
true
瞌睡虫(719367804) 10:51:46
guess
无法浏览网页(1250623166) 10:52:57
我也是迷糊的
无法浏览网页(1250623166) 10:53:18
感觉上面是true 应为我自己也是这样使用的
W@lf(326335) 10:53:19
运行下不就知道结果了吗?
无法浏览网页(1250623166) 10:53:25
而且没有出现没有错误
无法浏览网页(1250623166) 10:53:34
而且一直是这样写代码的
无法浏览网页(1250623166) 10:53:39
但是
无法浏览网页(1250623166) 10:54:13
我在看java书籍中告诉我
无法浏览网页(1250623166) 10:54:16
未命名.jpg
无法浏览网页(1250623166) 10:54:53
我想弄清楚java和net两个对== 和equals 是否是一致的
无法浏览网页(1250623166) 10:55:05
到底是比较值还是比较引用
瞌睡虫(719367804) 10:56:30
我印像中==是引用,equals是值,但是是在C#中
无法浏览网页(1250623166) 11:02:49
很多C#的教材都会强调对象相等的概念。我们都知道,在C#的世界里存在两种等同性。一种是逻辑等同性:如果两个对象在逻辑上代表同样的值,则称他们具有逻辑等同性。另一种是引用等同性:如果两个引用指向同一个对象实例,则称他们具有引用等同性。
  众所周知,Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等。Object的Equals的默认实现比较的是两个对象的引用等同性。而Object的派生类ValueTpye重写了Equals方法,它比较的是两个对象的逻辑等同性。也就是说,在C#里,引用类型的默认Equals版本关注的是引用等同性,而值类型关注的是逻辑等同性。当然,这并不总能满足我们的要求。所以每当我们更在意引用类型的逻辑等同性的时候,我们就应该重写Equals方法。
  重写引用类型的Equals方法以改变其默认的比较方式的一个著名例子是String类。当我们写出string1.Equals(string2)这样的代码时,我们比较的不是string1和string2这两个引用所指向的是否为同一个实例(引用等同性),而是比较string1与string2所包含的字符序列是否相同(逻辑等同性)。
无法浏览网页(1250623166) 11:07:23
object对象的equals默认实现是比引用对象是否相等。
object的派生对象valuetype重写了equals方法 比较值是否相等。

引用类型对象  默认情况下 操作符== 比较的是引用对象 和equals一致。
值类型对象 如果没有重写 操作符== 是会得到编译错误。
无法浏览网页(1250623166) 11:11:41
所以总结以上情况:
在编写代码的时候 使用equals  比使用 == 要好些。
无法浏览网页(1250623166) 11:15:05
大家说说意见
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 11:15:35
@无法浏览网页不用纠结这个,Java 的 String 类 和 .Net 的 string 类型 在 Equals 和 == 的处理是不一样的 Java 中 一个是比较值 和 比较引用 而在 .Net 中都是比较值 .Net 中对 string 的 == 进行了重写 实现方式和 Equals 一样 而 Java 中没有这样做
[郑州] 苏飞<sufei.1013@163.com> 11:24:09
[洛阳] 季末ˇ  谁有空可以把这块发个帖子诠释一下。
无法浏览网页(1250623166) 11:28:38
net:
理解关键:Object---- 属于 引用类型,
ValueType继承于object ---- 属于 值类型
关键看是什么类型的比较。

一:equals 是按照值类型、引用类型 进行比较的。
1、如果是值类型比较的就是两个比较对象的值。
2、如果是引用类型比较的就是两个比较对象的引用。
二:== 同样是按照值类型、引用类型 进行比较的。
1、如果是值类型比较的就是比较两个对象的值(同equals)
2、如果是引用类型比较 就要看是否重写了==操作符,如果没有重写就会出现编译错误。
无法浏览网页(1250623166) 11:28:56
谁补充些java的情况
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 11:30:27
@[郑州] 苏飞[img]file:///C:%5CUsers%5CADMINI%7E1%5CAppData%5CLocal%5CTemp%5C6ZD$%HBUZ[H%7E@Y%28R%7B46]9%601.gif[/img]我会说 我把论坛的账号密码忘了 最后在试了四边之后成功登陆了。。。 差一次就被锁了。。。
无法浏览网页(1250623166) 11:31:14
一:equals 是按照值类型、引用类型 进行比较的。
1、如果是值类型比较的就是两个比较对象的值。
2、如果是引用类型比较的就是两个比较对象的引用。
二:== 同样是按照值类型、引用类型 进行比较的。
1、如果是值类型比较的就是比较两个对象的值(同equals)
2、如果是引用类型比较 就要看是否重写了==操作符,如果没有重写就会出现编译错误。

以上是默认情况。
如果实现了重写equals或者==操作符。那就是按重写的比较方法进行比较.
--------------------------------------------------------------------------------------------------------------------
感谢 无法浏览网页  [洛阳] 季末ˇ<gexiaoliang@vip.qq.com>  瞌睡虫(719367804)   W@lf(326335)  

本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2012-9-26 12:25:48 | 显示全部楼层
大神就是这样炼成的。。
 楼主| 发表于 2012-9-26 12:31:06 | 显示全部楼层
Kaelthas 发表于 2012-9-26 12:25
大神就是这样炼成的。。

时间 紧任务重,故没做任何处理,全是原版
发表于 2012-9-26 13:04:40 | 显示全部楼层
net:
理解关键:Object---- 属于 引用类型,
                 ValueType继承于object ---- 属于 值类型
关键看是什么类型的比较。

一:equals 是按照值类型、引用类型 进行比较的。
1、如果两个值类型对象比较,就是比较两个对象的值是否相等。
2、如果两个引用类型对象比较,就是比较比较两个对象的引用是否指向一个地址。
二:== 同样是按照值类型、引用类型 进行比较的。
1、如果两个值类型对象比较,就是比较两个对象的值是否相等(同equals)。
2、如果两个引用类型对象比较,就要看是否重写了==操作符,如果没有重写就会出现编译错误。

以上是默认情况。
如果实现了重写equals或者==操作符。那就是按重写的比较方法进行比较。
 楼主| 发表于 2012-9-26 13:13:20 | 显示全部楼层
无法浏览网页 发表于 2012-9-26 13:04
net:
理解关键:Object---- 属于 引用类型,
                 ValueType继承于object ---- 属于 值类型 ...

这个重写的意义不大吧。
 楼主| 发表于 2012-9-26 13:18:44 | 显示全部楼层
Kaelthas 发表于 2012-9-26 12:25
大神就是这样炼成的。。

http://follow.v.t.qq.com/index.p ... amp;style=3&f=1
给你个好东西访问一下 把你的签名可以换了
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-22 03:32

© 2014-2021

快速回复 返回顶部 返回列表