📜  Swift数据类型

📅  最后修改于: 2020-10-09 15:46:03             🧑  作者: Mango

在本教程中,您将了解Swift编程语言支持的不同数据类型,并在创建变量或常量时使用它。

数据类型是变量或常量可以存储在其中的数据(值)的类型。例如,在文章Swift Variables and Constants中,您创建了一个变量和一个常量以将字符串数据存储在内存中。

该数据可以是文本/ 字符串 (“ Hello”)或数字(12.45),也可以是位(0&1)。定义数据类型可确保仅存储定义的数据类型。

让我们看一个场景:

假设您要创建一个游戏。由于大多数游戏在游戏完成后都会显示高分和玩家姓名,因此您需要为游戏存储这两个数据。

高分是一个数字(例如59),玩家的名字是一个字符串(例如Jack)。您可以创建两个变量或常量来存储数据。

在Swift中,这可以通过将变量和数据类型声明为:

var highScore:Int = 59
var playerName:String = "Jack"

在这里,我们声明了存储值59的Int类型的highScore变量。并且,声明了存储值Jack的String类型的playerName变量。

但是,如果您执行以下操作:

var highScore:Int = "Jack"

您将得到一个编译时错误,指出无法将’String’类型的值转换为指定的’Int’类型

这是因为您声明highScore存储整数值,但在其中放置了字符串 。此错误可确保highScore只能存储一个数字,而不能存储玩家的名字。


数据类型的大小

数据类型的另一个重要部分是其大小。这指定了可以存储在给定变量或常量中的数据大小。

类型的大小以位为单位进行测量,最多可以存储2 。如果您不了解Bit,请将其视为0或1的值。

因此,对于Type size = 1位,它最多只能存储2 1 = 2,两个值:0或1。因此,字母程序的1位系统可以将0解释为a / 0,将1解释为b /。 1.0。

0 -> a or 0 
1 -> b or 1

同样,两位系统最多可以存储2 2 = 4个值:(00,01,10,11),每个组合可以表示为:

00 -> a or 0
01 -> b or 1
11 -> c or 2
10 -> d or 3

对于位系统,它最多可以存储2 n个值。


Swift数据类型

下面列出了swift中最常用的数据类型:

布尔

  • 声明为Bool类型的变量/常量只能存储两个值truefalse
  • 默认值 :false
  • 在使用if-else语句时经常使用它。如果有其他文章,请参见Swift。
示例1:布尔数据类型
let result:Bool = true
print(result)

运行该程序时,输出为:

true

整数

  • 声明为整数类型的变量/常数可以存储正数和负数,包括零,没有小数部分。
  • 默认值 :0
  • 大小 :32/64位取决于平台类型。
  • 范围 :-2,147,483,648至2,147,483,647(32位平台)
    -9223372036854775808至9223372036854775807(64位平台
  • Integer类型有很多变体。例如UIntInt8Int16等。您最常用的是Int
  • 如果您需要指定一个变量/常量可以容纳的整数的大小/类型,则可以使用UIntInt8Int16等进行更具体的存储,我们将在下面进行探讨。
示例2:整数数据类型
var highScore:Int = 100
print(highScore)

highScore = -100
print(highScore)

运行该程序时,输出为:

100
-100

在上面的示例中,我们声明了一个Int类型的变量highScore 。首先,我们给它分配了100的值,因此print(highScore)在屏幕上输出100。

后来,我们使用赋值运算符将值更改为-100,其中highScore = -100因此, print(highScore)在屏幕上输出-100。


让我们探索Swift中Int类型的一些变体。

诠释8
  • 可以存储正数和负数的整数类型的变体。
  • 默认值 :0
  • 大小 :8位
  • 范围 :-128至127

一个Int8整数可以总共存储2 8 =(256)个值。即它可以存储0到255之间的数字,对不对?

是的,你是对的。但是由于Int8包含正数和负数,因此我们可以存储从-128到127的数字,包括0,总计为256个值或数字。

var highScore:Int8 = -128//ok
highScore = 127 //ok
highScore = 128 // error here
highScore = -129 //error here

您还可以使用Swift函数内置的.min.max找出类型可以存储的最高和最低值。

示例3:最大和最小Int8数据类型

print(Int8.min)
print(Int8.max)

运行该程序时,输出为:

-128
127

UInt
  • 整数类型的变体,称为UInt(无符号整数),只能存储无符号数字(正数或零)。
  • 默认值 :0
  • 大小 :32/64位取决于平台类型。
  • 范围 :0至4294967295(32位平台)
    0至18446744073709551615(64位平台)

示例4:UInt数据类型

var highScore:UInt = 100
highScore = -100//compile time error when trying to 

上面的代码将给您一个编译时错误,因为无符号整数只能存储0或正值。尝试在无符号整数中存储负值会给您一个错误。


浮动

  • 声明为浮点型的变量或常量可以存储带小数点或小数点的数字。
  • 默认值 :0.0
  • 大小 :32位浮点数。
  • 范围 :1.2 * 10 -38至3.4 * 10 38 (〜6位数字)
示例5:浮动数据类型
let highScore:Float = 100.232
print(highScore)

运行该程序时,输出为:

100.232

  • 声明为Double类型的变量/常量也将带有小数点或小数点的数字存储为Float,但比Float支持的小数点大。
  • 默认值 :0.0
  • 大小 :64位浮点数。 (因此,Double类型的变量可以存储带小数或小数点大于Float支持的数字)
  • 范围 :2.3×10 -308〜1.7 * 10 308(〜15位)
示例6:双精度数据类型
let highScore:Double = 100.232321212121
print(highScore)

运行该程序时,输出为:

100.232321212121

字符

  • 声明为字符类型的变量/常量可以存储单字符字符串 字面量。
  • 您可以使用转义序列\ u {n}(Unicode代码点,n为十六进制)在Swift中将表情符号或英语以外的其他语言作为字符包含在内。
示例7: 字符数据类型
let playerName:Character = "J"
let playerNameWithUnicode:Character = "\u{134}"
print(playerName)
print(playerNameWithUnicode)

运行该程序时,输出为:

J
Ĵ

  • 声明为String类型的变量或常量可以存储字符集合。
  • 默认值“” (空字符串)
  • 它是值类型。请参见Swift值和引用类型
  • 您可以使用for-in循环遍历字符串。 请参阅 Swift for-in循环。
  • Swift还支持一些特殊的转义序列以在字符串使用它们。例如,
    • \0 (空字符),
    • \\ (一个普通的反斜杠\),
    • \t (制表字符),
    • \v (垂直标签),
    • \r (回车),
    • \" (双引号),
    • \' (单引号),和
    • \u{n} (unicode码点,n为十六进制)。
示例8:字符串数据类型
let playerName = "Jack"
let playerNameWithQuotes = "\"Jack\""
let playerNameWithUnicode = "\u{134}ack"
print(playerName)
print(playerNameWithQuotes)
print(playerNameWithUnicode)

运行该程序时,输出为:

Jack
"Jack"
Ĵack

请参阅Swift 字符和字符串,以了解有关字符和字符串的声明,操作和示例的更多信息。

除了这种数据类型外,Swift中还有其他高级数据类型,例如tupleoptionalrangeclassstructure等。您将在后面的章节中学习。


要记住的事情

1.由于Swift是一种类型推断语言,因此变量或常量可以根据存储的值自动推断类型。因此,您可以在创建变量或常量时跳过类型。但是,出于可读性考虑,您可以考虑编写类型,但不建议这样做。

示例9:类型推断的变量/常量

let playerName = "Jack"
print(playerName)

Swift编译器可以根据其值自动推断该变量为String类型。

2. Swift是一种类型安全的语言。如果将变量定义为某种类型,则以后不能使用其他数据类型进行更改。

示例10:Swift是一种类型安全的语言

let playerName:String
playerName = 55 //compile time error

上面的代码将产生一个错误,因为我们已经指定变量playerName将为String。因此我们无法在其中存储一个整数。