iOS-常量与变量

“ 基本存储类型:32位 CPU 对应的字节大小”

数据类型 储存空间大小(单位:字节) 范围
Byte(字节型) 1 0 - 255
Boolean(布尔型/逻辑型) 2 True 或 False
Integer(整数型) 2 -32,768 ~ 32767
Long(长整型) 4(有符号32位整数) -2147483648 ~ 2147483647
Long Long(长长整型) 8(有符号64位整数) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,80
Single(单精度浮点型) 4 负数范围:-3.402823E38 ~ -1.401298E-45

正数范围:1.401298E-45 ~ 3.402823E38
Double(双精度浮点型) 8 负数范围:-1.797,693,134,862,32E308 ~ -4.940,656,458,412,47E-324

正数范围: 4.940,656,458,412,47E-324 ~ 1.797,693,134,862,32E308
Object(对象型) 4 任何 Object 引用
String (变长) 10 长度从 0 到 大约 20 亿
String (定长) 10 长度从 1 到大约 65,400

#pragma mark --- 基础数据类型

/** 2.1:数据类型的相互转换
 *  NSString、int、float 的相互转换
 */
-(void)shujuTypeTransform1
{
    //1. NSString --> char*
    NSString *strr = @"Test转化123";
    const char * charA = [strr UTF8String];
    NSLog(@"charA = %s",charA);

    //2.char* --> NSString
    NSString *charToString = [NSString stringWithUTF8String:charA];
    NSLog(@"charToString= %@ \n ",charToString);

    NSString *newString = @"123456";
    //3.NSString --> int
    int Int = [newString intValue];

    //4.int      --> NSString
    NSString *Str = [NSString stringWithFormat:@"%d",Int];

    //5.NSString --> float
    float Float = [Str floatValue];

    //76.float   --> NSString
    NSString *str = [NSString stringWithFormat:@"%f",Float];
    

    NSLog(@"--->newString: %@",newString);
    NSLog(@"NSString ---> int      : %d",Int);
    NSLog(@"int      ---> NSString : %f",Float);
    NSLog(@"NSString ---> float    : %@",Str);
    NSLog(@"float    ---> NSString : %@\n ",str);

}
/** 2.2:数据类型的相互转换:
 *  NSData、NSString、Byte、UIImage、NSMutableData
 */
-(void)shujuTypeTransform2
{
    //1:NSString --> NSData
    NSString * str1 = @"hello, world!";
    NSData * data = [str1 dataUsingEncoding:NSUTF8StringEncoding];
    //NSData --> NSString
    NSString * dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"---<2.1>data.bytes: %s", data.bytes);
    NSLog(@"---<2.1>dataString: %@\n ", dataString);

    
    //2:NSData --> Byte
    NSString *testString = @"1234567890";
    NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];
    Byte *DataByte = (Byte *)[testData bytes];
    //Byte --> NSData
    Byte byte[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
    NSData *Bytedata = [[NSData alloc] initWithBytes:byte length:24];
    NSLog(@"---<2.2>testByte: %s", DataByte);
    NSLog(@"---<2.2>Bytedata: %@\n ", Bytedata);

    //3:NSData 与 UIImage
    //获取Documents路径
    NSFileManager *fileManager=[NSFileManager defaultManager];
    
    //保存图片:UIImage-> NSData
    UIImage  *image=[UIImage imageNamed:@"1.jpg"];
    NSData   *imageData= UIImagePNGRepresentation(image);
    NSString *imagePath= [NSHomeDirectory() stringByAppendingPathComponent:@"520.png"];
    //NSLog(@"--->imagePath: %@",imagePath);
    [fileManager createFileAtPath:imagePath contents:imageData attributes:nil];
    
    //读取图片:NSData --> UIImage
    NSData      *readData=[NSData dataWithContentsOfFile:imagePath];
    UIImage     *dataImage= [UIImage imageWithData:readData];
    UIImageView *imageview= [[UIImageView alloc]initWithFrame:CGRectMake(60, 200, 200, 200)];
    imageview.image= dataImage;
    [self.view addSubview:imageview];
    NSLog(@"---<2.3>dataImage: %@\n ", dataImage);
    
    
    //4:NSData 与 MSMutableData
    //NSData --> MSMutableData
    NSData *ndata=[[NSData alloc]init];
    NSMutableData *mdata=[[NSMutableData alloc]init];
    mdata=(NSMutableData*)[NSData dataWithData:ndata];


    //5:NSData 合并为一个 NSMutableData
    //音频文件路径
    NSString *mp3Path1 = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp3"];
    NSString *mp3Path2 = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"mp3"];
    //音频数据
    NSData *sound1Data = [[NSData alloc] initWithContentsOfFile: mp3Path1];
    NSData *sound2Data = [[NSData alloc] initWithContentsOfFile: mp3Path2];
    //合并音频
    NSMutableData *sounds = [NSMutableData alloc];
    [sounds appendData:sound1Data];
    [sounds appendData:sound2Data];
    //保存音频
    NSLog(@"--->data length:%ld", [sounds length]);
    [sounds writeToFile:[self filePathWithName:@"tmp.mp3"] atomically:YES];

}
//filePathWithName
- (NSString *)filePathWithName:(NSString *)filename
{
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
     NSString *documentsDirectory = [paths objectAtIndex:0];
     return [documentsDirectory stringByAppendingPathComponent:filename];
}
//3.NSNumber
-(void)number
{
    /**
     *  NSNumber: 就是数字对象
     *  可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。
     * 
     * 在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber?这是因为很多类(如NSArray)都要求使用对象,而int不是对象。
     *
     * NSNumber继承NSObject ,可以使用比较 compare: isEqual等消息
     * if([intNumber isEqualToNumber:floatNumber]) ....
     */
    NSNumber *intNumber,*floatNumber,*doubleNumber,*longNumber,*charNumber,*number1;
    intNumber   = [NSNumber numberWithInteger:123];         //1.创建integer类型对象
    longNumber  = [NSNumber numberWithLong:0xababab];       //2.创建long类型对象
    charNumber  = [NSNumber numberWithChar:'K'];            //3.创建char类型对象
    floatNumber = [NSNumber numberWithFloat:123.00];        //4.创建float类型对象
    doubleNumber= [NSNumber numberWithDouble:112233e+15];   //5.创建double类型对象

    //初始化实例
    number1 = [[NSNumber alloc] initWithInt:1000];
    NSLog(@"--->intValue: %d",[number1 intValue ]);//unsigned

    NSLog(@"--->intValue    : %i",[intNumber intValue]);
    NSLog(@"--->integerValue: %li",[intNumber integerValue]);
    NSLog(@"--->longValue   : %lx",[longNumber longValue]);
    NSLog(@"--->charValue   : %c",[charNumber charValue]);
    NSLog(@"--->floatValue  : %f",[floatNumber floatValue]);
    NSLog(@"--->doubleValue : %lg",[doubleNumber doubleValue]);
    //判断两个对象的值是否相等
    if ([intNumber isEqualToNumber:floatNumber] == YES ) {
        NSLog(@"值相等");
    } else {
        NSLog(@"值不相等");
    }
    /**
     *  NSComparisonResult
     *
     *  @param NSOrderedAscending  = -1 // 小于
     *  @param NSOrderedSame       = 0   // 等于
     *  @param NSOrderedDescending = 1   // 大于
     */
    //比较两个int值的大小
    if ( [intNumber compare:charNumber] == NSOrderedAscending) {
        NSLog(@"左边的数字大");
    } else {
        NSLog(@"右边的数字大");
    }
        
    float Amt = [@"1" floatValue];
    NSLog(@"---> Amt = %.2f",Amt);
    NSLog(@"---> Amt = %f",Amt);
    // float 类型比较大小
    NSNumber *a=[NSNumber numberWithFloat:Amt];
    NSNumber *b=[NSNumber numberWithFloat:0.01];
    if ([a compare:b]==NSOrderedDescending  || [a compare:b]==NSOrderedSame) {
        NSLog(@"a >= b"); //Amt >= 0.010000
    }

    // NSString 类型比较大小
    NSString *str1 = @"some text";
    if (str1!=nil && [str1 compare:@"some text"] == NSOrderedSame) {
        NSLog(@"---> Do something");
    }else {
        NSLog(@"---> Do something else");
    }
    
    /**
     *  那么当str1为空的时候,[str1 compare:@"some text"] 消息的返回就会为nil。nil表示一个空的Objective-C对象,实际就是表示一个空指针,而它代表的值就是0,与NSOrderedSame的值相等. 如此,回到最前面的if语句,如果str1为nil,那么整个语句的值为真。这会给程序造成非常严重的问题,小则逻辑错误,UI显示错误等,大则会造成数据泄漏等等。。。所以,一旦出现这种情况,还是很严重的。
     
       笔者个人建议,NSString类型比较时,要判断非空nil
     */
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容