值的比较
来源:互联网 发布:淘宝店铺促销活动方案 编辑:程序博客网 时间:2024/05/29 03:18
今天看《你必须知道的.net》时候,
看到值类型、引用类型的比较时发现和自己以前的理解有误差。
值类型的比较:int a=1;int b=1;a==b比较两个a,b值是否相等 (true);equals(a,b)比较两个值是否相等(true);ReferenceEquals(a,b)比较a,b是否为同一对象(false),此时a,b分别进行的装箱,占用不同的内存,两个不同的对象;
引用类型的比较(非string); a==b比较的是两个对象是否为同一对象(false);equals(a,b)比较两个对象是否为同一对象;ReferenceEquals(a,b)比较两个对象是否为同一对象
string类型比较:a==b比较的是两个值是否相同;equals(a,b)比较的是a,b的值是否相同;ReferenceEquals(a,b)比较两个对象是否相同
值得注意的是string类型的时候
string a="111";
string b="111";
此时ReferenceEquals(a,b);比较,最初我以为是应该为false;
但结果不是;因为,string类型由于字符串驻留机制,在string声明的时候会先在string的驻留池中先检查是否有此string值的对象,有则直接引用,无则创建,因此此处的a,b是对应的同一对象,结果为false;
若为string a=new string ("1",1);string b=new string("1",1);则为显示的声明了两个字符串,并分别分配了内存;此时ReferenceEquals(a,b)比较则为false,a,b为不同的引用;
如发现有错,请帮忙指出,谢谢。
- 值的比较
- 与“零”值的比较
- 值类型的相等比较
- 与“零值”的比较
- 与零值的比较
- 与零值的比较
- Integer值比较的问题
- JavaScript的对象值比较
- java Integer的值比较
- return 比较表达式的值
- 两个Integer的值比较
- 返回比较表达式比较结果/计算表达式值的函数
- C++对象指针比较比较的并不是地址值
- Integer值和int值的比较
- 学习笔记--比较 Strings的值
- [反射]比较两个VO对象的值
- ORACLE CLOB对象值的比较问题
- float变量与零值的比较
- 在新浪微博的地址
- svn强制写日志
- 凸包浅谈
- AVAudioPlayer不能正常播放声音如何解决?
- 关于Android ant build的学习
- 值的比较
- mysql sock找不到
- 软件加密的现状和发展趋势
- Android 代码混淆及第三方jar包不被混淆
- 【记录】MFC中自定义消息
- 工作感悟
- iOS中属性与成员变量的区别
- php类常量
- ios小数向上、下取整,计算结果向上、下取整