Swift学习笔记iOS Developer

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

2017-04-15  本文已影响78人  老何解码

今天老何与大家分享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,代表定义变量


上一篇 下一篇

猜你喜欢

热点阅读