您的位置:首页 > 移动开发 > Swift

Swift中的数据类型

2015-10-02 19:10 330 查看
数据类型

swift 中常见的数据类型
Int 、Float、Double、Character、String
Array、Dictonary、元组类型(Tuple)、可选类型(Optional)
可以看出,数据类型的首字母都是大写的

如何指定变量 常量的数据类型
在常量 变量名后面加上冒号(:)和类型名称
let age:Int = 10
上面代码表示:定义了一个Int类型的变量age 初始值是10

一般来说 没有必要明确指定变量 常量的类型
如果在声明常量、变量时赋了初始值 Swift 以自动推断出这个常量、变量的类型
let age = 20

//Swift 会推断出age是Int类型 因为20是个整数

变量初始化
Swift严格要求变量在使用之前必须进行初始化 因为Swift是强类型
而且是类型安全的语言 两个类型不一样是不能相加的
下面的写法是错误的

var a:Int
let c = a + 10
第一行代码中:Swift并不会为变量a赋初值 a没有初始化
第二行代码会报错
下面的代码是正确的
var a:Int = 20
let c = a + 10

整数分为2种类型
有符号(signed) 正 负 0
无符号(unsigned) 正 负 0

Swift提供了8、16、32、64位的有符号和无符号的整数
比如
UInt8: 8位无符号整型
Int32: 32位有符号整型
Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64

最值
可以通过max 和min 属性来获取某个类型的最小值和最大值
let minValue = UInt8.min
let maxValue = UInt8.max

Int和UInt
Swift 提供了特殊的有符号整型和无符号的整型
Int\UInt的长度和当前系统平台一样
在32为系统平台上 Int和UInt 的长度是32位
在64为系统平台上 Int和UInt 的长度是64位

Int在32位系统平台的取值范围:-2147483648~2147483647
建议
在定义变量时 不要总考虑有符号 整数长度的问题
尽量使用Int 这样可以保证代码的简洁性 和可复用
不会出现强制转换的代码

存储范围
每种数据类型都有自己的存储范围
Int8存储的范围是:-128~127
UInt8的存储范围是:0~255

如果数值超出了存储范围 编译器就会直接报错
下面的语句会直接报错
let num1:UInt8 = -1
let num2:Int8 = Int8.max + 1
第一行代码报错原因UInt8不能存储负数
第二行代码报错的原因Int8能存储的最大值是Int8,max

整数的表示形式
整数的4中表示形式
十进制:没有前缀
let i1 = 10 //10

二进制:以0b为前缀
let i2 = 0b1010 //10

八进制:0o为前缀
let i3 = 0o12//10

十六进制:以0x为前缀
let i4 = 0xA //10

浮点数
浮点数:就是小数 Swift提供了两种浮点类型
Double:64位浮点数 当浮点值非常大或需要非常精确的使用此类型
Float: 32位浮点数 当浮点值不需要使用Double的时候使用此类型

精确程度
Double 至少15位小数
Float 至少6位小数
如果没有明确说明类型 浮点数默认就是Double类型
let num = 0.14

浮点数的表示形式
浮点数
可以使用十进制和十六进制2种进制来表示
十进制没有前缀

没有指数 let d1 = 12.5
有指数 let d2 = 0.125e2

十六进制(以0x为前缀且一定要有指数)
let d3 = 0xC.8p0
==0xC.8*2o==12.5*1
let d3 = 0xC.8p1
== 12.5*2 ==25

数字格式
数字可以增加额外的格式 使他们更容易阅读
可以增加额外的0
let money = 001999 //1999
let money2 = 001999.000 //1999.0

可以增加额外的下划线_增强可读性
1. let oneMillion1 = 1_000_000 //1000000
2. let oneMillion2 = 100_0000 // 1000000
3. let overOneMillon = 1_000_000.000_001//1000000.000001
增加了额外的0_ 并不会影响数值的大小

类型转换

两个类型不的同的数值 是不能直接进行计算的
下面的语句是错误的
let num1:Uint8 = 10
let num2:Int = 20
let sum:Int = num1 + num2
第3行会 报错
报错原因:num1是UInt8类型的,num2是类型Int 类型不同
将num1转化为Int类型 就能与num2进行相加
下面的语句是正确的
let sum:Int = Int(num1) + num2

下面的语句是正确的
let sum = 3 + 2.14
两者的相加结果是5.14 等赋值之后 编译器会自动推断出sum是Double 类型

类型别名
可以使用typealias关键字定义类型的别名 跟C 语言的typedef作用类似
typealias MyInt = Int
//给Int类型起了个别名加做MyInt
原类型名称能用在什么地方 别名就可以用在什么地方
声明变量、常量类型
let num:MyInt = 20
获得类型的最值
let minValue = MyInt.min
类型转换
let num = MyInt(3.14)//3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: