IOS学习笔记之十一(包装类、description、isequal)

xiaoxiao2021-02-28  47

1、下面的类不是包装类

1)、NSInteger(64位相对于long)

2)、NSUInteger(64位相对于unsigned long)

3)、CGFLoat(64位相对于double, 32位相对于float)

 

 

 

 

 

 

2、下面类是包装类

1)、NSValue

NSValue是NSNumber的父类

2)、NSNumber

一般方法

+numberWith***:把指定类型包装成NSNumber

-initWith***:先需要创建NSNumber对象,然后再用一个基本类型的值来初始化NSNumber.

-xxxValue:返回该NSNumnber对象包装的基本类型值

 

 

 

 

 

 

3、description方法

这个方法有点类似java里面的toString方法,需要重写,直接打印对象,会默认调用这个方法,这里和java有点类似,返回字符串格式如下

<类名[实例变量1=值1,类名[实例变量2=值2, …]>

 

 

 

 

 

 

 

4)、==和equals

==比较基本类型,如果比较对象,就是比较对象的内存地址,地址相同才返回1

Equals方法一般需要重写,和java里面有点类似,我们一般用来比较字符串,因为NSString里面重写了这个方法,java里面的String也重写了这个方法,但是字符串常量池需要注意,如果指针指向字符串常量池,而且地址一样,我们用==比较会返回真,这里java和ios都一样,如下

NSString *s1 = @“hello”; NSString *s2 = @“hello”; S1==s2,这里返回1

 

 

5、简单测试demo

NSNumber *num = [NSNumber numberWithInt:20]; NSNumber *dou = [NSNumber numberWithDouble:4.5]; NSNumber *ch = [[NSNumber alloc] initWithChar:'h']; NSLog(@"%d", [num intValue]); NSLog(@"%g", [dou doubleValue]); NSLog(@"%@", ch); NSLog(@"%c", [ch charValue]); MyApple *apple = [[MyApple alloc] initWithColor:@"red" weight:5.6]; NSLog(@"%@", apple); NSString *s1 = [NSString stringWithFormat:@"chenyu"]; NSString *s2 = [NSString stringWithFormat:@"chenyu"]; NSLog(@"s1 == s2 is %d", s1 == s2); NSLog(@"s1 equals s2 %d", [s1 isEqual:s2]); NSString *s3 = @"hello"; NSString *s4 = @"hello"; NSLog(@"s3 == s4 is %d", s3 == s4); NSLog(@"s1 == s3 is %d", s1 == s3);

 

 

 

 

6、运行结果

20 4.5 104 h <MyApple[color=red, weight=5.6]> s1 == s2 is 1 s1 equals s2 1 s3 == s4 is 1 s1 == s3 is 0

 

 

 

 

 

chen.yu 认证博客专家 博客排名前200 深信服三年半工作经验,目前就职游戏厂商,希望能和大家交流和学习,微信公众号:编程入门到秃头 或扫描下面二维码零基础入门进阶人工智能(链接)
转载请注明原文地址: https://www.6miu.com/read-2631633.html

最新回复(0)