equals()和运算符==的区别
来源:互联网 发布:愿你知我心 编辑:程序博客网 时间:2024/04/28 06:33
昨天看到《项目中的.NET》里面介绍equals()和运算符==的区别,解释的很易懂。所以写在这,巩固一下,都TM赖我这内存超小的脑子。好了,废话不说了。
大家都知道,值类型式存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储应用类型变量的地址,其本身则存储在堆中。
“==”操作符比较的是两个变量的值是否相等,对于引用类型变量表示的是两个变量在栈中的内容是否相同(即变量的存储的地址)。
equals()表示的是两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
string s1=new string(new char[]{'1','2'});
string s2=new string(new char[]{'1','2'});
s1==s2 //返回true
s1.Equals(s2) //返回true
object o1=s1;
object o2=s2;
o1==o2 //返回false
o1.Equals(o2) //返回true
按照"=="操作符和equals的定义,可能不理解为什么s1,s2的变量地址不相同但是用"=="却返回true,这是因为字符串是一个特殊的引用型类型,在C#语言中,重载了string对象的很多方法(包括equals()方法),使string对象用起来就像是值类型一样。
所以s1==s2返回的是true
以上为书中介绍equals()和运算符==的区别,我只是写出了容易误解的部分。如果有幸被大家看到,再次推荐一下《项目中的.NET》,和我一样的初学者也可以看一下。
0 0
- C# Equals()和运算符==的区别
- C#的==运算符和Equals()方法区别
- C#Equals()和运算符==的区别
- equals()和运算符==的区别
- ==运算符和Equals()方法区别
- ==运算符和equals()方法区别
- 在Java中,用作字符串比较的运算符" == "和".equals()"的区别
- “==”运算符与equals方法的区别
- “==”运算符与equals()方法的区别
- 比较运算符compareTo()、equals()、==之间的区别
- “=”和“equals()”的区别
- (十)Equals 和运算符==
- ==和equals比较运算符
- ==和equals比较运算符
- Equals方法和==运算区别研究
- ReferenceEquals(), static Equals(), instance Equals(), 和运算行符==之间的关系
- java ==和equals、equals和hashCode的区别
- ReferenceEquals,== , Equals相当运算的区别
- HTML5,让 Ajax 改变 URL 且支持后退
- Android App监听软键盘按键的三种方式
- Android APP增量升级的实现方式
- ext的几种store定义和赋值
- SQL中的distinct
- equals()和运算符==的区别
- Active 控件调用DLL,因为安全透明性问题无法运行
- Windows Phone调用Web Service
- PHP 2014 CHM手册
- java中StringBuilder、StringBuffer、String类之间的关系
- HDU 1236 排名
- toString() unavailable - no suspended threads
- JAVA 实现汉字五行笔画查询
- Panel 控件概述(Windows 窗体)c#