Swift 数据类型<05<iOS开发小典

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

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



  Swift中分成两种数据类型,一是命名类型(命名类型是定义时可以给定特定名称的类型,包括基本数据类型,如String,和其他命名类型,如Array、enum等,这里先介绍基本数据类型,其他命名类型后续将准备相关专题介绍),二是复合类型(包含命名类型和其他复合类型,如元组类型)
一、基本数据类型


/*
1、整数类型:Int,Int8,Int16,Int32,Int64
  用来表示一个整数,一般用Int即可
  Int*,*用来表示占用的位数,即表示整数值大小范围。
*/
/*
(1)、Int8 整型:一般占1个字节(8位)
     取值范围:-128~127(-2^7~2^7-1)

*/
 //显式声明:变量名:变量类型
  var i8:Int8 = 18
 //隐式声明:swift可以根据初始值推断声明的常量或变量的类型,因此不需要定义数据类型
//var i8 = 18000
  //print表示输出,里面变量用字符串插值形式输出:\(变量)
  print("int i8 的值为\(i8)")
/*
(2)、Int* 整型:一般占*8个字节(*位)
   取值范围:*为16,32,64等
   同1仅取值范围不同,不在举例。

*/
/*
(3)、Int 整型:
     整型一般用这个即可,不指定专门的长度,和平台相关。

*/

 var i:Int = 18000

 //var i = 18000

 print("int i 的值为\(i)")


/*

2、浮点类型:Float、Double
  Float单精度浮点类型、Double双精度浮点类型
  Swift用浮点型表示实数,简单的说就是带有小数的数据。
*/
/*
(4)、Float 单精度浮点类型 :占4个字节(32位)

*/
 //var f:Float = 3.14
 var f = 3.14
 print("float f 的值为\(f)")
/*
(5)、Double 双精度浮点类型 :占8个字节(64位)
     浮点数不指定类型默认代表双精度
*/

 var d:Double = 3.14
 //var d = 3.14
 print("double d 的值为\(d)")

/*
(6)、Character 字符类型
     存放单个字符,用双引号引用起来
     Swift语言采用了Unicode字符存储,范围大,可包含表情符号等。
*/
 var c:Character = "a";
 print("Character c 的值为\(c)")
 //Unicode表情符号
 var cat = "🐱"
 print("Character 表情符号 cat 的值为\(cat)")
/*
(7)、String 字符串类型
    Character字符型仅表示一个字符,多个字符要用String

*/

 var name:String = "zhangsan"
    //var  name = "zhangsan";
 print("String name 的值为\(name)");
/*
(8)、Bool 布尔类型
     有两个值:用true和false表示
      用作标记或条件判断

*/

 //var hasChecked:Bool = true;
 var hasChecked = false
 print("bool hasChecked 的值为\(hasChecked)");

二、复合类型
  这里先介绍元组类型,其他的后续陆续讲解。

 /*元组类型
   把多个值组合成一个复合值,元组内值可以是任意类型的组合,用,分隔,用()扩起来
   元组可以嵌套
 */

//(1)、定义元组变量,后面直接赋值
   //系统会自动推断此元组类型为(Int,String,String)
   var employee = (26,"zhangsan","工程师")
   //通过下标获取不同的值,从0开始
   print("employee age is \(employee.0),name is\(employee.1),title is \(employee.2)")

//(2)、定义元组变量,同时定义元组内元素变量,并赋值(key:value)
   var employee2 = (age:26,name:"zhangsan",title:"工程师")
    //通过每个变量的key获取value
   print("employee2 age is \(employee2.age),name is\(employee2.name),title is \(employee2.title)")
//(3)、定义元组变量,同时定义元组内元素变量+类型,再进行赋值
   var car:(brand:String,price:Double)
       car = ("奔驰",888888.88)
   print("car 品牌 is \(car.brand),价格 is\(car.price)")

4、数据类型转换

不同数据类型的数据是可以转换的,分从小转大和从大转小

/* 1、数据类型转换(从小转大)
     各类型表数范围由小到大顺序为:
     Int8 -> Int16 -> Int32 -> Int64 -> Float ->Double
    Swift类型转化从小转大,从大转小都需要显式类型转化(即强制类型转换),
     采用目标构造类型方法(),如Int8(a)
 
 */
   var height:Int = 170
   var fHeight:Float = Float(height);

   print("Int转换成Float的值为: \(fHeight)");


/*
  2、数据类型转换(从大转小)
    这种转换是存在风险的,且可能导致程序报错
 
 */

   var weight:Double = 23.56
   var iWeight:Int = Int(weight)
   print("Double 转化成Int的值为:\(iWeight)")

5、变量与常量

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

 /*
 一、变量
    1、概念:是Swift程序的一个基本存储单元,变量是由一个标识符及一个初始值组合定义。
     标识符定义规则为:(程序中的变量、类、函数、方法等名字)
     1:必须以字符(unicode字符,包含表情等)、下划线“_”、或“$”符号开头
     2:可以包括数字、区分大小写,但不能以数字开头
     3:不能使用Swift语言的关键字,例如class、public等(更多见附注1Swift关键字)
     变量的值是可以改变的
    2、变量定义格式:
     var 变量名:数据类型 = 初始值;
     例如 var age:Int = 0;
 
 */

//1,定义变量+数据类型,并初始化(显式)
   var score:Int = 200;

//2,定义变量不加数据类型,并初始化(隐式)
   var heightf = 180.6;

//3,变量的修改(可多次改变)
   var money:Double = 1234.56;
       money = 3456.78;
       money = 5678.9;

//4,变量的传递修改(从一个变量传递给另一个变量)
   var age = 6;
   var ageb = age;
//5,变量可在一行可以定义多个,用逗号分开,但尽量每行定义一个,程序可读性高
 var v1 = 6,v2 = 9,v3 = "hello"

/*
 二、常量
   以上定义的所有变量都可以定义为常量,用let关键字修饰,但常量的值是不可以修改的
 
 */
//6,定义常量,常量不能修改
   let PI:Float = 3.1415;
    // PI = 3.14159;

   print("变量分数值为:\(score),变量身高值为:\(heightf),存款为:\(money),年龄为\(ageb),常量PI为:\(PI)");

6、运行结果

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


附注:

1、Swift关键字
  Swift官方使用的特定标识,代表特殊含义,如var,代表定义变量


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

推荐阅读更多精彩内容