Objective-C 数据类型<05B<iOS开发小典

今天老何与大家分享Objective-C中的数据类型,从一个大家相对感兴趣的话题聊起吧,随着智能手机与网络的普及,大家都办理了流量套餐,每到月底大家也非常关心有没有流量了?费用是如何被扣掉的?
  好,让我们带着问题了解2个概念。

1、数据

数据是信息的表现形式和载体,可以是符号、文字、数字、图像、语音、视频等。
  手机/电脑上安装的软件,Word文档、PPT文档,短信、微信,图片、视频等等都是数据。
  之所以我们使用手机会有流量费用,是因为发送和接收了数据(如在线听歌、发送微信、查看朋友圈,这些都是走数据流量的,如同用水电一样),运营商是计费的,比如联通(0.0003元/kb),这里提到数据单位kb,来接着看第二个概念。

2、数据单位

数据是有单位的(如尺寸有单位米,厘米、毫米等,它们之间有换算关系,1米=100厘米,1厘米=10毫米),从小到大依次是比特(Bit)、字节(Byte)、千字节(KB)、兆字节(MB)、吉字节(GB)、太字节(TB)......它们之间的换算关系为:

   1B=8bit
   1 KB = 1024 B
   1 MB = 1024 KB
   1 GB = 1024 MB
   1 TB = 1024 GB
   ......
   > 比特(Bit):比特是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。  
   > 字节(Byte):字节是计算机存储容量的基本单位,一个字节由8位二进制数组成,如10011000,在计算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一个汉字。   
   > 其他KB,MB、GB、TB......每一个级别都是前面的乘以1024。  

了解完上面概念后,再回答我们前面的问题,如果你通过手机在线看一个视频,为100M(现在文件都很大,M即MB,按照联通费用标准需换算成KB),那么花费=100Mx1024x0.0003元/KB≈30元,自我感觉hei不hei:),独此三家,别无选择。
  OK,进入我们的今天主题“数据类型”

3、数据类型

数据除了有单位,也是有类型的,数据类型是对数据的分类,每种数据类型都具有独特的特征、不同的分配空间(最大位数/字节数不同)与相应的操作功能(举个例子:房子有别墅、住宅、办公楼等分类,产权不一,大小不一,功能不一,但都是房子)



   Objective-C中分成三种数据类型,一是基本数据类型,二是引用数据类型(也就是对象类型,继承NSObject,包括系统内置的类和自定义的类对象,如NSString),三是其他数据类型(OC中非以上两种类型的,都放到这里)
一、基本数据类型

/*
       1、整数类型:short、int、long
          用来表示一个整数
          short短整型、int 整型、long 长整型
       */
      /*
       (1)、int 整型:一般占4个字节(32位)
             取值范围:-2,147,483,648~2,147,483,647(-2^31~2^31-1)
             默认值:0
             NSLog函数中格式化字符串:%i表示
       */
      int i = 18000;
      NSLog(@"int i 的值为:%i",i);
      /*
       (2)、short短整型:占2个字节(16位)
             取值范围:-32768~32767(-2^15~2^15-1)
             默认值:0
             NSLog函数中格式化字符串:%hi表示
       */
      short si = 1800;
      //short int si2 = 1800;
      NSLog(@"short si 的值为:%hi",si);
      /*
       (3)、long 长整型 :占8个字节(64位)
             取值范围:-9,223,372,036,854,775,808~9,223,372,036,854,775,807(-2^63~2^63-1)
             默认值:0L,后面有一个L或l
             NSLog函数中格式化字符串:%li表示
       */
      long li = 180000l;
     // long int li2 = 180000l;
      NSLog(@"long li 的值为:%li",li);
      /*
       2、浮点类型:float、double
          float单精度浮点类型、double双精度浮点类型
          Objective-C用浮点型表示实数,简单的说就是带有小数的数据。
       */
      /*
       (4)、float 长单精度浮点类型 :占4个字节(32位)
             默认值:0.0,后面要跟一个f或F表示
             NSLog函数中格式化字符串:%f表示(%e表示科学计数法(指数形式),%g表示浮点数,自动选择前面合适的)
             浮点数可以限定宽度。0.2f分别对应前面位数和小数点后面位数,这里代表后面显示的是2位
       */
      float f = 3.14f;
      NSLog(@"float f 的值为:%0.2f",f);
      /*
       (5)、double 双精度浮点类型 :占8个字节(64位)
             浮点型的默认类型
             默认值:0.0, 浮点数不添加默认代表双精度
             NSLog函数中格式化字符串:%f表示(%e表示科学计数法(指数形式),%g表示浮点数,自动选择前面合适的)
       */

      double d = 3.14;
      NSLog(@"double d 的值为:%g",d);
      /*
       (6)、char 字符类型 :占1个字节(8位)
             存放单个字符,用单引号引用起来
             NSLog函数中格式化字符串:%c表示
       */
      char c = 'a';
      NSLog(@"char c 的值为:%c",c);

二、引用数据类型
  这里先讲一个常用的NSString类型,其他的后续陆续讲解。

 /*
         (1)、NSString 字符串类型
              char字符型仅表示一个字符,多个字符要用NSString,并且要以@开头
              默认值:nil
              NSLog函数中格式化字符串:%@表示
         */
        NSString *name = @"zhangsan";
        NSLog(@"NSString name 的值为:%@",name);

三、其他数据类型
  这里先讲一个bool类型,其他的后续陆续讲解。

        /*
         (1)、bool 类型 :
               有两个值:1或0,其中1可以用TRUE和YES表示,0可以用FALSE和NO表示。
               用作标记或条件判断
               NSLog函数中格式化字符串:%i表示
         */
        
        bool hasChecked=TRUE;
        NSLog(@"bool hasChecked 的值为:%i",hasChecked);

4、数据类型转换

不同数据类型的数据是可以转换的,分为自动数据类型转换和强制数据类型转换

      /* 1、自动数据类型转换
         按照数据类型占用存储不同可以自动类型转换或强制类型转换,总的原则是小存储容量数据类型可以自动转换成为大存储容量数据类型。
         不同类型数据间 按照下面关系的从左到右(从低到高)自动转换:
         Bool、char、short int、enum -> int ->long int->long long-> float -> double -> long double。

         
         */
        int height = 170;
        float fHeight=height;
        
        NSLog(@"int 自动转换成f的值为: %f",fHeight);
        
        /*
         2、强制数据类型转换
         如果类型转换是右到左情况,就需要强制类型转换了,转换方法就是在数据前面加上(目标类型),
         但是这种转换是存在风险的,有可能造成数据的丢失,需要谨慎进行。
         
         */

        double weight=23.56;
        int iWeight=(int)weight;
        NSLog(@"double 强制转化成int的值为:%i",iWeight);

5、变量与常量

最后补充一些知识,之前我们使用的代码格式都为
   int i = 18000;
  这个是什么呢?格式为:变量数据类型 变量名 = 变量值

 /*
         一、变量
         1、概念:是Objective-C程序的一个基本存储单元,变量是由一个标识符及一个可选的初始值组合定义。
         定义规则为:
           1:必须以字母、下划线“_”、或“$”符号开头
           2:可以包括数字、区分大小写
           3:不能使用Objective-C语言的关键字,例如int、float、public等(更多见附注1Objective-C关键字)
         变量的值是可以改变的
         2、变量定义格式:
           变量数据类型 变量名;
           例如 int age;
        
         */
        
        //1,变量先定义,在初始化
        int score;
        score=200;
    
        //2,定义的时候直接初始化
        float heightf=180.6f;
        
    
        //3,变量的修改(可多次改变)
        double money=1234.56;
             money=3456.78;
             money=5678.9;
    
        //4,变量的传递修改(从一个变量传递给另一个变量)
        int age=6;
        int ageb=age;
        NSLog(@"the ageb is %i",ageb);
        /*
         二、常量
         常量是变量中的一个特例,用const关键字修饰,常量的值是不可以修改的
         对常量命名的定义规则:建议尽量全部大写,并用下划线将词分开
         
         */
        //5,定义常量,常量不能修改,仅能定义时初始化
        const float PI=3.1415f;
         // PI = 3.14159f;
      
        NSLog(@"变量分数值为:%i,变量身高值为:%0.1f,存款为:%g,年龄为%i,常量PI为:%0.4f",score,heightf,money,ageb,PI);

6、运行结果

保存程序并运行,结果如下:


附注:

1、OC关键字
  OC官方使用的特定标识,代表特殊含义,如int,代表整型数据类型


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容