iOS开发:==、isEqual与isEqualToString判断是否相等
来源:互联网 发布:hr绿宝瓶面霜 知乎 编辑:程序博客网 时间:2024/06/05 20:35
一、介绍
1、==常用来判断两个变量是否相等。
如果两个变量是基本类型的变量,且都是数值型,只要两个变量的值相等,使用==判断就将返回真
int a = 65; float b = 65.0f; char ch = 'A'; NSLog(@"%d",a == b); NSLog(@"%d",a == ch);
输出结果为:
2016-06-13 19:54:16.291 isEqualAnd==-test[6947:327865] 1
2016-06-13 19:54:16.292 isEqualAnd==-test[6947:327865] 1
如果两个变量是指针类型,只有两个变量保存的地址相等才会返回为真。
NSString * str1 = @"hello"; NSString * str2 = @"hello"; NSString * str3 = [NSString stringWithFormat:@"hello"]; NSString * str4 = [NSString stringWithFormat:@"hello"]; NSLog(@"str1地址:%p str2地址:%p",str1,str2); NSLog(@"%d",str1 == str2); NSLog(@"str3地址:%p str4地址:%p",str3,str4); NSLog(@"%d",str3 == str4); NSLog(@"str1地址:%p str3地址:%p",str1,str3); NSLog(@"%d",str1 == str3); NSLog(@"str1地址:%p str4地址:%p",str1,str4); NSLog(@"%d",str1 == str4);
输出结果为:
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] str1地址:0x1073ad088 str2地址:0x1073ad088
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] 1
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] str3地址:0xa00006f6c6c65685 str4地址:0xa00006f6c6c65685
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] 1
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] str1地址:0x1073ad088 str3地址:0xa00006f6c6c65685
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] 0
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] str1地址:0x1073ad088 str4地址:0xa00006f6c6c65685
2016-06-13 20:03:23.591 isEqualAnd==-test[7027:333876] 0
2、isEqual是NSObject的方法,只能用来判断两个指针变量是否相等,当两个指针变量保存的地址相等时返回为真。但它跟==的区别是isEqual方法可以重写,来自定义相等的标准。换句话说只要你愿意任何的指针变量都可以通过重写此方法返回相等的结果。
NSString重写了isEqual方法,判断的标准是两个字符串对象所包含的字符是否相等。
NSLog(@"%d",[str1 isEqual:str3]);返回的结果:
2016-06-13 20:14:47.854 isEqualAnd==-test[7077:340841] 1
isEqual方法重写举例:
- (BOOL)isEqual:(id)object { // 自己与自己比较永远返回为真 if (object == self) { return YES; } //与空对象比较永远为假 if (object == nil) { return NO; } //不属于同一个类 为假 if (![object isKindOfClass:[MyItem class]]) { return NO; } ClassName *other = (ClassName *)object; return [other.identifier isEqual:self.identifier]; }
3、 isEqualToString 是 NSString 的方法,因此从继承关系角度来说isEqualToString 是 isEqual 的衍生方法。isEqualToString方法只能用来比较字符串是否相等,而且也是按照字符串的字符是否相等来作为标准的而不是地址。
NSString * str1 = @"hello"; NSString * str3 = [NSString stringWithFormat:@"hello"]; NSLog(@"%d",[str1 isEqualToString:str3]);
输出结果为:
2016-06-13 20:38:05.036 isEqualAnd==-test[7139:352013] 1
- iOS开发:==、isEqual与isEqualToString判断是否相等
- iOS中的相等== isEqual isEqualToString
- Objective-C中 ==、isEqual、isEqualToString判断字符串相等
- Object中 isequal,isEqualToString,!=的区别
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- isEqual,isEqualToString,== 三者的区别
- iOS判断对象相等 重写isEqual、isEqualToClass、hash
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- Objective-C语法之isEqual ,isEqualToString , == 三者的区别
- ctive-c中 isEqual ,isEqualToString , == 三者的区别
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- Objective-C基础】 isEqual ,isEqualToString , == 三者的区别
- iOS开发之isEqual与hash!
- 035.isEqual 两个变量是否相等
- 035.isEqual 两个变量是否相等
- Perl判断是否相等用==
- 用==判断String是否相等
- MySql-日志详解
- 在浏览器中输入www.baidu.com后执行的全部过程
- Acdream 1214 Nice Patterns Strike Back (矩阵乘法 + 状态压缩)
- iOS_高效开发之道
- 初识Swift
- iOS开发:==、isEqual与isEqualToString判断是否相等
- 苹果公司6月1日后发布的应用必须支持IPv6-Only网络的解决办法(底层socket连接的IPv6支持方案)
- Halcon MFC混合编程-图像显示随鼠标滚动放大缩小
- jQuery初用 注册
- 实用小工具:电脑插入U盘后自动打开文件夹
- 使用boost::shared_ptr做为线程的参数
- iOS 应用将适应新的的IPv6-only网络 -解决方案
- 音乐源码重新上传了,请童鞋们自行下载
- CM系统刷机至真机