Objective-C基础—数字对象NSNumber

到目前为止,我们所接触的数字类型,int型,float型,long
摘要由CSDN通过智能技术生成

到目前为止,我们所接触的数字类型,int型,float型,long型都是Objective-C语言中的基本数据类型,它们不是对象,也就是说,不能够向它们发送消息。然而有时需要将这些值作为对象使用。比如,使用Foundation的NSArray对象创建数组,它要求存储的值必须未对象,因此不能将基本数据类型直接存储到数组中。

NSNumber类可以根据数据的类型创建对象。

//声明对象与变量
        NSNumber *myNumber, *floatNumber, *intNumber;
        
        //integer 型
        intNumber = [NSNumber numberWithInteger:100];
        int i = intNumber.intValue;
        NSLog(@"numberWithInteger:%i", i);
        
        // long型
        myNumber = [NSNumber numberWithLong:0xabcdef];
        NSLog(@"numberWithLong:%li", myNumber.longValue);
        
        // char 型
        myNumber = [NSNumber numberWithChar:'A'];
        NSLog(@"numberWithChar:%c", myNumber.charValue);
        
        // float 型
        floatNumber = [NSNumber numberWithFloat:0.333];
        NSLog(@"numberWithFloat:%f", floatNumber.floatValue);
        
        // double 型
        myNumber = [NSNumber numberWithDouble:23.84888];
        NSLog(@"numberWithDouble:%f", myNumber.doubleValue);
注:上面从NSNumber对象中获取值必须要和存储到NSNumber对象里面的数值类型一致.

//NSLog输出
2014-11-06 16:47:30.445 ObjectiveCLearn[10914:303] numberWithInteger:100
2014-11-06 16:47:30.446 ObjectiveCLearn[10914:303] numberWithLong:11259375
2014-11-06 16:47:30.446 ObjectiveCLearn[10914:303] numberWithChar:A
2014-11-06 16:47:30.446 ObjectiveCLearn[10914:303] numberWithFloat:0.333000
2014-11-06 16:47:30.447 ObjectiveCLearn[10914:303] numberWithDouble:23.848880
当然,现在Objective-c已经引入了ARC自动引用计数,可以方便的自动处理内存,所以我们也可以方便的使用初始化实例方法:

intWithChar:
intWithShort:
intWithInt:
intWithLong
intWithFloat:
......

//基本使用

NSNumber *number1 = [NSNumber numberWithFloat:3.14];
NSNumber *number2 = [NSNumber numberWithInt:10];
//比较两个数是否相等
if ([number1 isEqualToNumber:number2]) {
    NSLog(@"number1 equal number2");
}else {
    NSLog(@"numbers are not equal");
}
// 验证一个Number是否小于、等于或大于另一个Number
if ([number1 compare:number2] == NSOrderedAscending) {
    NSLog(@"First number is less than second");
}
isEqualToNumber:比较两个NSNumber对象的数值,程序会返回BOOL值查看这两个值是否相等.
compure: 测试一个值是否在数值上小于、等于或者大于另外一个值,当number1小于number2的时候返回NSOrderedAscending,但两个值相等这返回NSOrderdSame,如果number2大于number1则返回NSOrderedDescending。


下面列举除了Api文档中对NSNumber的创建等方法,也可以查看一下NSDecimalNumber类的相关文档,它是NSNumber的子类,在对象层面上提供了一些数值的四则运算

<pre name="code" class="objc" style="font-size: 13.3333339691162px;">初始化NSNumber对象
<pre name="code" class="objc">- (id)initWithChar:(char)value;
- (id)initWithUnsignedChar:(unsigned char)value;
- (id)initWithShort:(short)value;
- (id)initWithUnsignedShort:(unsigned short)value;
- (id)initWithInt:(int)value;
- (id)initWithUnsignedInt:(unsigned int)value;
- (id)initWithLong:(long)value;
- (id)initWithUnsignedLong:(unsigned long)value;
- (id)initWithLongLong:(long long)value;
- (id)initWithUnsignedLongLong:(unsigned long long)value;
- (id)initWithFloat:(float)value;
- (id)initWithDouble:(double)value;
- (id)initWithBool:(BOOL)value;
- (id)initWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
- (id)initWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);


 
 
<pre name="code" class="objc" style="font-size: 13.3333339691162px;">创建NSNumber对象
<pre name="code" class="objc">+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithFloat:(float)value;
+ (NSNumber *)numberWithDouble:(double)value;
+ (NSNumber *)numberWithBool:(BOOL)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);

// 检索实例方法
 – boolValue– charValue– decimalValue– doubleValue– floatValue– intValue– integerValue– longLongValue– longValue– shortValue– unsignedCharValue– unsignedIntegerValue– unsignedIntValue– unsignedLongLongValue– unsignedLongValue– unsignedShortValue检索字符串表示形式– descriptionWithLocale:– stringValue比较NSNumber对象– compare:– isEqualToNumber:访问类型信息– objCType 
 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值