------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
/******************************************
* 今天对 “基础数据类型和包装类”进行学习.收获如下:
*
* 1. 它们都是基本数据类型,并不是包装类:
* NSInteger相当于long型整数,
* NSUInteger相当于unsignedlong型整数,
* CGFloat在64位平台相当于double;32位平台相当于float。
*
* 2. NSValue 和 NSNumber都是包装类,并且NSValue是 NSNumber的父类。NSValue是比NSNumber更通用的包装类,用于将数据项添加到NSArray、NSSet等集合中。
*
* 3. NSNumber是更具体的包装类,主要用于包装C语言的各种数据类型,主要包括如下三类方法:
* __
* | 1⃣️ + numberWithXxx: 直接将特定类型的值包装成 NSNumber
* |
* < 2⃣️ - initWithXxx: 需要先alloc一个NSNumber对象,在用一个Xxx类型的值初始化NSNumber
* |
* |__ 3⃣️ - xxxValue: 与以上两个相反,该方法返回NSNumber对象的基本类型值
*
* 4. 总结第3条:
*
* [NSNumber numberWithXxx: 值 ]
* 或[[NSNumber alloc] initWithXxx:值 ]
*
* _________>___>___>_________
* | |
* 基本类型变量 包装类对象
* |________<___<___<_________|
*
* [对象 XxxValue]
*******************************************/
代码实现:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool
{ //使用类方法初始化 NSNumber,再用实例方法返回基本数据值并打印
NSNumber* num = [NSNumber numberWithInt:20];
NSNumber* dou = [NSNumber numberWithDouble:3.4];
NSLog(@"%d", [num intValue]);
NSLog(@"%g", [dou doubleValue]);
//使用实例方法创建 NSNumber
NSNumber* ch = [[NSNumber alloc] initWithChar:'J'];
NSLog(@"%@", ch);
}
return 0;
}