OC中的数字、字符串与集合

数字、字符串和集合

数字对象

基本数据类型都不是对象,也就是说不能向他们发送消息。

int、NSInteger的区别

NSInteger会自动识别当前电脑系统是32位还是64位数,然后自动返回最大的类型(int还是NSInteger)。

例如,当前电脑为32位系统,你声明的NSInteger自动变为int。当前电脑为64位系统,你声明的NSInteger还是NSInteger。

备注:在多数情况下一定尽可能的使用NSInteger

NSInteger、NSUInteger的区别

NSInteger是有符号整形,即声明的变量既可以是正数也可以是负数。

NSUInteger是无符号整形,即声明的变量只能是正数,比如取值数组下标,可以使用来声明NSUInteger。

#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {
   
    @autoreleasepool {
   
        // insert code here...
        NSLog(@"这是一个测试数字对象的程序...");
        NSNumber *myNumber, *floatNumber, *intNumber;
        NSInteger myInt;
        // integer 型值
        intNumber = [NSNumber numberWithInteger:100];//表示创建一个值为100的整数对象
        myInt = [intNumber integerValue];//获取储存在intNumber中的整形值,将她储存在NSInteger变量myInt中
        NSLog(@"%li",(long)myInt);
        // long 值
        myNumber = [NSNumber numberWithLong:0xabcdef];
        NSLog(@"%lx",[myNumber longValue]);
        //char 值
        myNumber = [NSNumber numberWithChar:'X'];
        NSLog(@"%c",[myNumber charValue]);
        // float 值
        floatNumber = [NSNumber numberWithFloat:100.00];
        NSLog(@"%f",[floatNumber floatValue]);
        // double 值
        myNumber = [NSNumber numberWithDouble:12345e+15];
        NSLog(@"%lg",[myNumber doubleValue]);
        //验证两个number是否相等
        if([intNumber isEqualToNumber:floatNumber] == YES)
            NSLog(@"相等");
        else
            NSLog(@"不相等");
        //验证一个number是否小于、等于或大于另一个number
        if([intNumber compare:myNumber] == NSOrderedAscending)
            NSLog(@"第一个比第二个大");
    }
    return 0;
}
NSNumber 的创建、检索方法
创建和初始化方法 初始化实例方法 检索实例方法
numberWith数据类型 initWith数据类型 数据类型Value

允许使用@表达式创建数字对象。

  intNumber = [NSNumber numberWithInteger:100];//表示创建一个值为100的整数对象
  intNumber = @100;//同上语句一致

字符串对象

要使用 Objective - C 语言创建一个字符串对象,需要在字符串开头放置一个 @ 字符。

NSLog函数
        NSString *str = @"test1";
        NSLog(@"%@",str);

字符串常量 test 被赋值给 NSString 变量 str。之后使用NSLog显示他的值。

description方法
-(NSString *) description{
   
            return [NSString stringwithformat: @"%i/%i",fenzi,fenmu];
        }

你可以使用格式化字符 %@ 显示数组、字典和集合的全部内容,事实上,通过覆盖 description方法 还可以用这些格式的字符显示你自己类的对象。

类似于 stringwithformat: 这样的方法允许提供多个参数。这些参数使用一系列逗号分隔提供给方法。


2022年9月1日

可变对象和不可变对象

创建字符串对象的时候,会创建一个内容不可更改的对象,称为不可变对象。可以使用NSString 类来处理不可变字符串。你经常需要处理字符串并更改字符串中的字符。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
   
    @autoreleasepool {
   
        // insert code here...
        NSLog(@"这是一个测试字符串对象方法的小程序...");
        NSString *str1 = @"This is string A";//创建一个字符串A
        NSString *str2 = @"This is string B";//创建一个字符串B
        NSString *res;
        NSComparisonResult compareResult;  //用于保存后面执行的字符串操作比较的结果
        //计算字符串中的字符
        NSLog(@"字符串A的长度:%lu",[str1 length]);
        //将一个字符串复制到另一个字符串
        res = [NSString stringWithString:str1];
        NSLog(@"复制:%@",res);
        //将一个字符串复制到另一个字符串末尾
        str2 = [str1 stringByAppendingString:str2];
        NSLog(@"链接: %@",str2);
        //验证两个字符串是否相等
        if([str1 isEqualToString:res] == YES)
            NSLog(@"str1 == res");
        else
            NSLog(@"str1 != res");
        //验证一个字符串是否小于、等于或大于另一个字符串
        compareResult = [str1 compare:str2];
        
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值