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位平台上,UIntUInt32长度相同。
  • 在64位平台上,UIntUInt64长度相同。
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
2
var floatPI: Float = 3.1415926535897932384626433832795028841971693993751058209
var doublePI: Double = 3.1415926535897932384626433832795028841971693993751058209

显示结果如下:

1
2
3.141593
3.141592653589793

布尔值

Swift有一个基础布尔量类型,就是Bool,布尔量被作为逻辑值来引用,因为它的值只能是真或者假。Swift布尔量提供量两个常量值,truefalse

1
2
var isLocked: Bool = true 
isLocked = false

字符串

字符串是一系列字符,例如”Hello world”。字符串类型用String表示。

1
var name:String = "Felix"

多行字符串:

1
2
3
4
var multiLineString = """
Hello,
My name is Felix.
"""

字符

字符指的是单个字母。

1
var c:Character = "a"

可选类型

可选类型用来处理值可能确实的情况,可选类型表示有值或没有值。

数据范围

类型大小(字节)区间值
Int81字节-128到127
UInt81字节0到255
Int324字节-2147483648 到 2147483647
UInt324字节0 到 4294967295
Int648字节-9223372036854775808 到 9223372036854775807
UInt648字节0 到 18446744073709551615
Float4字节1.2E-38 到 3.4E+38 (~6 digits)
Double8字节2.3E-308 到 1.7E+308 (~15 digits)

整数类型可以使用Int.maxInt.min获取Int的最大值和最小值。