Swift 数据类型

==========git

在咱们使用任何程序语言编程时,须要使用各类数据类型来存储不一样的信息。编程

变量的数据类型决定了如何将表明这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。安全

全部变量都具备数据类型,以决定可以存储哪一种数据。code


内置数据类型

Swift 提供了很是丰富的数据类型,如下列出了经常使用了几种数据类型:内存

Int

通常来讲,你不须要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:开发

  • 在32位平台上,IntInt32长度相同。
  • 在64位平台上,IntInt64长度相同。

除非你须要特定长度的整数,通常来讲使用Int就够了。这能够提升代码一致性和可复用性。即便是在32位平台上,Int能够存储的整数范围也能够达到-2,147,483,648~2,147,483,647,大多数时候这已经足够大了。字符串

UInt

Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同:it

  • 在32位平台上,UIntUInt32长度相同。
  • 在64位平台上,UIntUInt64长度相同。
注意: 尽可能不要使用 UInt,除非你真的须要存储一个和当前平台原生字长相同的无符号整数。除了这种状况,最好使用 Int,即便你要存储的值已知是非负的。统一使用 Int能够提升代码的可复用性,避免不一样类型数字之间的转换,而且匹配数字的类型推断。

整数类型须要注意如下几点:io

  • 在 32 位系统上, Int 和 Int32 长度相同。
  • 在 64 位系统上, Int 和 Int64 长度相同。
  • 在 32 位系统上, UInt 和 UInt32 长度相同。
  • 在 64 位系统上, UInt 和 UInt64 长度相同。
  • Int8, Int16, Int32, Int64 分别表示 8 位, 16 位, 32 位, 和 64 位的有符号整数形式。
  • UInt8, UInt16, UInt32, UInt64 分别表示 8 位, 16 位, 32 位 和 64 位的无符号整数形式。

浮点数:Float、Double

浮点数是有小数部分的数字,好比 3.141590.1-273.15编译

浮点类型比整数类型表示的范围更大,能够存储比 Int 类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:

  • Double 表示64位浮点数。当你须要存储很大或者很高精度的浮点数时请使用此类型。
  • Float 表示32位浮点数。精度要求不高的话能够使用此类型。
注意: Double精确度很高,至少有15位数字,而 Float 最少只有6位数字。选择哪一个类型取决于你的代码须要处理的值的范围。

布尔值:Bool

Swift 有一个基本的布尔(Boolean)类型,叫作 Bool。布尔值指逻辑上的值,由于它们只能是真或者假。Swift 有两个布尔常量,true 和 false。

字符串:String

字符串是字符的序列集合,例如:

"Hello, World!"

字符:Character

字符指的是单个字母,例如:

"C"

可选类型:Optional

使用可选类型来处理值可能缺失的状况。可选类型表示有值或没有值。


数值范围

下表显示了不一样变量类型内存的存储空间,及变量类型的最大最小值:

类型

大小(字节)

区间值

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)


类型别名

类型别名对当前的类型定义了另外一个名字,类型别名经过使用 typealias 关键字来定义。语法格式以下:

typealias newname = type

例如如下定义了 Int 的类型别名为 Feet:

typealias Feet = Int

如今,咱们能够经过别名来定义变量:

import Cocoa

typealias Feet = Int
var distance: Feet = 100
print(distance)

咱们使用 playground 执行以上程序,输出结果为:

100


类型安全

Swift 是一个类型安全(type safe)的语言。

因为 Swift 是类型安全的,因此它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可让你在开发的时候尽早发现并修复错误。

import Cocoa

var varA = 42
varA = "This is hello"
print(varA)

以上程序,会在 Xcode 中报错:

error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"

意思为不能将 'String' 字符串赋值给 'Int' 变量。


类型推断

当你要处理不一样类型的值时,类型检查能够帮你避免错误。然而,这并非说你每次声明常量和变量的时候都须要显式指定类型。

若是你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。

例如,若是你给一个新常量赋值42而且没有标明类型,Swift 能够推断出常量类型是Int,由于你给它赋的初始值看起来像一个整数:

let meaningOfLife = 42
// meaningOfLife 会被推测为 Int 类型

同理,若是你没有给浮点字面量标明类型,Swift 会推断你想要的是Double:

let pi = 3.14159
// pi 会被推测为 Double 类型

当推断浮点数的类型时,Swift 老是会选择Double而不是Float。

若是表达式中同时出现了整数和浮点数,会被推断为Double类型:

let anotherPi = 3 + 0.14159
// anotherPi 会被推测为 Double 类型

原始值3没有显式声明类型,而表达式中出现了一个浮点字面量,因此表达式会被推断为Double类型。

实例

import Cocoa

// varA 会被推测为 Int 类型
var varA = 42
print(varA)

// varB 会被推测为 Double 类型
var varB = 3.14159
print(varB)

// varC 也会被推测为 Double 类型
var varC = 3 + 0.14159
print(varC)

执行以上代码,输出结果为:

423.141593.14159

相关文章
相关标签/搜索