“==”与equals和equal

陈述

对于这三者我们可以简单的理解为:
equals是Object类的一个方法,用来比较两个对象的内容是否相等。
equal是继承Object类后对equals重写的一种方法。
“==”是用来比较两个对象的内存地址。

其实equal与equals这两者的功能应该是差不多的,这主要看编程者的编程思路。这里提到两者主要是因为之前在做一个题目时入了一个坑。
题目是:object类中有下面哪个方法?
当时我一看到equal就不假思索的选了。但其实这个答案是错的。object类中应该是equals这个方法,不是equal。虽然只是少了一个s,但意义上却是完全不一样的,一个是父类的方法,一个是子类重写的方法。

关于equals与双等于号),这两个都是判断两个对象是否相等,但equals是判断两个对象的内容是否相等,(双等于号)则是判断两个对象的内存地址是否相等。
String s1 = new String(“ABC”);
String s2 = new String(“ABC”);
s1.equals(s2); 这个结果为true
s1==(s2); 这个结果为false

由于s1与s2是两个不同的对象,所以当他们用“==”进行判断时就会为false,而他们的内容都是ABC,所以当他们用equals判断时为true。

### C# 中 `==`、`Contains` `Equals` 方法的区别 #### `==` 运算符 在 C# 中,`==` 是用于比较两个对象是否相等的运算符。对于引用类型,默认情况下它会比较两个对象的引用地址;而对于值类型,则是比较它们的内容。 ```csharp string str1 = "hello"; string str2 = "hello"; if (str1 == str2) { Console.WriteLine("Strings are equal"); } ``` 当应用于字符串时,编译器会对常量表达式执行优化并使两者指向相同的内存位置[^1]。 #### `Contains` 方法 此方法通常是在集合类中找到是否存在指定项的方法之一。例如,在列表或数组中检查某个特定元素的存在性。对于字符串来说,`Contains` 可用来判断子串是否存在于另一个字符串内。 ```csharp var numbers = new List<int> { 1, 2, 3 }; bool containsTwo = numbers.Contains(2); string sentence = "This is a test."; bool hasTest = sentence.Contains("test"); // true ``` 上述例子展示了如何利用泛型列表中的 `Contains` 来验证整数以及通过调用字符串实例上的同名成员来查找子序列。 #### `Equals` 方法 该方法由 .NET Framework 提供给所有对象,并允许开发者覆盖默认行为以实现更精确的对象间对比逻辑。特别是针对自定义类型的实例之间进行深拷贝级别的匹配测试很有帮助。另外值得注意的是,某些内置类型如 `String` 已经实现了自己的版本以便更好地支持大小写敏感/不敏感等多种情况下的文字串比较需求。 ```csharp object objA = "example"; object objB = "EXAMPLE".ToLower(); // Using overridden version of Object.Equals() Console.WriteLine(objA.Equals(objB)); // True because both strings have the same content after conversion to lower case. ``` 在这个片段里可以看到即使原始变量不是完全相同(一个是大写的 E),由于采用了忽略大小写的转换方式再做平等检验所以最终返回的结果还是肯定性的答复[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值