Swift 中的数据类型
整数
整数是没有小数部分的数字。整数可以是有符号的或者无符号。Swift提供来8,16,32和64位编码的有符号和无符号整数,例如UInt8表示8位无符号的整数,Int32表示32有符号整数。
Int
Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:
- 在32位平台上,Int和Int32长度相同。
- 在64位平台上,Int和Int64长度相同。
1 | var age:Int = 27 |
除非你需要特定长度的整数,一般来说使用Int就够了。这可以提高代码一致性和可复用性。即使是在32位平台上,Int可以存储的整数范围也可以达到-2,147,483,648~2,147,483,647,大多数时候这已经足够大了。
UInt
Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同:
- 在32位平台上,UInt和UInt32长度相同。
- 在64位平台上,UInt和UInt64长度相同。
1 | var age:UInt = 29 |
如果此时重新赋一个负值, Xcode 将会报错。1
age = -27
错误信息如下:“Negative integer ‘-27’ overflows when stored into unsigned type ‘UInt’“。
注意
只在的确需要存储一个和当前平台原生字长度相同的无符号整数的时候才使用 UInt 。其他情况下,推荐使用 Int ,即使已经知道存储的值都是非负的。如同类型安全和类型推断中描述的那样,统一使用 Int 会提高代码的兼容性,同时可以避免不同数字类型之间的转换问题,也符合整数的类型推断。
浮点数
浮点数是有小数的数字,例如3.1425926。浮点类型相比整数类型来说能表示更大的范围的值,可以存储比Int更大或者更小的数字。Swift提供来两种有符号的浮点数类型:
- Double代表63位的浮点数
- Float代表32位的浮点数
注意
Double有至少15位数字的精度,而Float的精度只有6位。
1 | var floatPI: Float = 3.1415926535897932384626433832795028841971693993751058209 |
显示结果如下:1
23.141593
3.141592653589793
布尔值
Swift有一个基础布尔量类型,就是Bool,布尔量被作为逻辑值来引用,因为它的值只能是真或者假。Swift布尔量提供量两个常量值,true和false。1
2var isLocked: Bool = true
isLocked = false
字符串
字符串是一系列字符,例如”Hello world”。字符串类型用String表示。1
var name:String = "Felix"
多行字符串:1
2
3
4var multiLineString = """
Hello,
My name is Felix.
"""
字符
字符指的是单个字母。1
var c:Character = "a"
可选类型
可选类型用来处理值可能确实的情况,可选类型表示有值或没有值。
数据范围
| 类型 | 大小(字节) | 区间值 |
|---|---|---|
| Int8 | 1字节 | -128到127 |
| UInt8 | 1字节 | 0到255 |
| Int32 | 4字节 | -2147483648 到 2147483647 |
| UInt32 | 4字节 | 0 到 4294967295 |
| Int64 | 8字节 | -9223372036854775808 到 9223372036854775807 |
| UInt64 | 8字节 | 0 到 18446744073709551615 |
| Float | 4字节 | 1.2E-38 到 3.4E+38 (~6 digits) |
| Double | 8字节 | 2.3E-308 到 1.7E+308 (~15 digits) |
整数类型可以使用Int.max和Int.min获取Int的最大值和最小值。