·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> IOS学习笔记2015-03-20OC-数值类型

IOS学习笔记2015-03-20OC-数值类型

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23
一 定义 
在Objective-C中,我们可以使用c中的数字数据类型,int、float、long等。它们都是基本数据类型,而不是对象。也就是说,不能够向它们发送消息。然后,有些时候需要将这些值作为对象使用。

二 关键字
1 NSInteger  int 包装类型  
	A 当你不知道程序运行哪种处理器架构时,你最好使用NSInteger,因为在有可能int在32位系统中只是int类型,
	而在64位系统,int可能变是long型。除非不得不使用int/long型,否则推荐使用NSInteger。
	B 从上面的定义可以看出NSInteger/NSUInteger是一种动态定义的类型,在不同的设备,不同的架构,
	有可能是int类型,有可能是long类型。
2 NSUInteger 是无符号的,即没有负数,NSInteger是有符号的。   
3 NSNumber 
	A 专门用来装基础类型的对象,把整型、单精度、双精度、字符型等基础类型存储为对象
	B NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中
	C NSInteger和普通数据类型是不能被封装到数组中的

 

//
//  main.m
//  OC-NSNumber
//
//  Created by wangtouwang on 15/3/20.
//  Copyright (c) 2015年 wangtouwang. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        //创建
        NSNumber *_n1 = [[NSNumber alloc] initWithInt:9];
        NSNumber *_n2 = [[NSNumber alloc] initWithFloat:8.1f];
        NSNumber *_n3 = [[NSNumber alloc] initWithDouble:8.1];
        NSNumber *_n4 = [[NSNumber alloc] initWithChar:'A'];
        NSLog(@"N1=%@ N2=%@ N3=%@ n4=%@",_n1,_n2,_n3,_n4);
        //还原
        // 转换为int
        int n1 = [_n1 intValue];
        //转换为double
        double n3 = [_n3 doubleValue];
        //转换为 float
        float n2 = [_n2 floatValue];
        // 转换为 char
        char n4 = [_n4 charValue];
         NSLog(@"N1=%i N2=%f N3=%f n4=%c",n1,n2,n3,n4);
        //比较是否相等
        NSLog(@"%@",[_n3 isEqualToNumber:_n2]?@"==":@"!=");
        //比较大小
         NSLog(@"%ld",[_n1 compare:_n2]);
        
        //数组可以增加NSNumber对象
        NSMutableArray *_array2 = [[NSMutableArray alloc] initWithObjects:_n1,_n2,_n3,_n4, nil];
        NSInteger INDEX= 12;
        //尝试用数组增加NSInteger对象 结果报错了,说明语法不支持
//         NSMutableArray *_array1 = [[NSMutableArray alloc] initWithObjects:_n1,_n2,_n3,_n4, INDEX,nil];
//        NSLog(@"%lu",[_array1 count]);
    }
    return 0;
}