iOS开发:==、isEqual与isEqualToString判断是否相等
2016-06-13 19:26
543 查看
一、介绍
1、==常用来判断两个变量是否相等。
如果两个变量是基本类型的变量,且都是数值型,只要两个变量的值相等,使用==判断就将返回真
输出结果为:
2016-06-13 19:54:16.291 isEqualAnd==-test[6947:327865] 1
2016-06-13 19:54:16.292 isEqualAnd==-test[6947:327865] 1
如果两个变量是指针类型,只有两个变量保存的地址相等才会返回为真。
输出结果为:
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方法,判断的标准是两个字符串对象所包含的字符是否相等。
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
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开发之路--微博“更多”页面
- iOS开发之路--微博骨架搭建
- iOS开发使用JSON解析网络数据
- IOS开发代码分享之获取启动画面图片的string
- iOS开发实现音频播放功能
- iOS开发之视图切换
- iOS开发使用XML解析网络数据
- IOS开发实现录音功能
- iOS开发之UIScrollView详解
- IOS开发之路--C语言数组和字符串
- iOS开发之触摸事件
- IOS开发代码分享之用nstimer实现倒计时功能
- iOS开发使用GDataXML框架解析网络数据
- iOS开发之UITableView详解
- IOS开发代码分享之设置UISearchBar的背景颜色
- ios推送证书
- iOS和tvOS游戏按需加载资源简介
- ios开发之环境搭建-01
- 在开发iOS程序时对日期处理的总结