Swift 數(shù)據(jù)類型

在本教程中,您將了解Swift編程語言支持的不同數(shù)據(jù)類型,并在創(chuàng)建變量或常量時使用它。

數(shù)據(jù)類型是變量或常量可以存儲在其中的數(shù)據(jù)(值)的類型。例如,在文章Swift 變量和常量,您創(chuàng)建了一個變量和一個常量以將字符串?dāng)?shù)據(jù)存儲在內(nèi)存中。

該數(shù)據(jù)可以是文本/字符串(“ Hello”)或數(shù)字(12.45),也可以是位(0&1)。定義數(shù)據(jù)類型可確保僅存儲定義的數(shù)據(jù)類型。

讓我們看一個場景:

假設(shè)您要創(chuàng)建一個游戲。由于大多數(shù)游戲在游戲完成后都會顯示高分和玩家姓名,因此您需要為游戲存儲這兩個數(shù)據(jù)。

高分(highScore)是數(shù)字(例如 59),玩家的名字(playerName)是字符串(例如 Jack)。您可以創(chuàng)建兩個變量或常量來存儲數(shù)據(jù)。

在Swift中,這可以通過將變量和數(shù)據(jù)類型聲明為:

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

在這里,我們聲明了Int類型的HighScore變量,它存儲值59。 以及存儲值Jack的字符串類型的playerName變量。

但是,如果您執(zhí)行以下操作:

var highScore:Int = "Jack"

您將得到一個編譯時錯誤,拋出 無法將'String'類型的值轉(zhuǎn)換為指定的'Int'類型

這是因為您聲明了 highScore 來存儲整數(shù)值,但在其中放置了字符串。這個錯誤確保 highScore 只能存儲一個數(shù)字而不能存儲玩家的名字。

數(shù)據(jù)類型的大小

數(shù)據(jù)類型的另一個重要部分是其大小。這指定了可以存儲在給定變量或常量中的數(shù)據(jù)大小。

Type 的大小以位為單位進(jìn)行度量,最多可以存儲 2bits。如果你了解 Bit(位),可以把它想象成一個0或1的值。

因此,對于Type size = 1 bit,則它最多只能存儲 2 1 = 2,兩個值:0 或 1。因此,字母程序的1位系統(tǒng)可以將0解釋為 a/0,將1解釋為 b/1.0。

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

同樣,兩位系統(tǒng)最多可以存儲2 2 = 4個值:(00,01,10,11),每個組合可以表示為:

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

對于位系統(tǒng),它最多可以存儲2 n個值。

Swift數(shù)據(jù)類型

下面列出了swift中最常用的數(shù)據(jù)類型:

布爾類型(Bool)

  • 聲明為 Bool 類型的變量/常量只能存儲兩個值 true 或 false。

  • 默認(rèn)值:false

  • 在處理if-else語句時經(jīng)常使用它??梢詤⒖嘉恼?Swift if else

示例1:布爾數(shù)據(jù)類型

let result:Bool = true
print(result)

運(yùn)行該程序時,輸出為:

true

整數(shù)類型(Integer)

  • 聲明為整數(shù)類型的變量/常量可以存儲正數(shù)和負(fù)數(shù),包括零,沒有小數(shù)部分。

  • 默認(rèn)值:0

  • 大小:32/64位取決于平臺類型。

  • 值范圍:-2,147,483,648 至 2,147,483,647(32位平臺)
    -9223372036854775808 至 9223372036854775807(64位平臺)

  • 還有很多 Integer 類型的變體,例如 UInt,Int8,Int16等。您最常用的是Int。

  • 如果您需要指定變量/常量所能容納的整數(shù)的大小/類型,可以使用UInt、Int8、Int16等更具體地存儲它,我們將在下面介紹這些內(nèi)容。

示例2:整數(shù)數(shù)據(jù)類型

var highScore:Int = 100
print(highScore)

highScore = -100
print(highScore)

運(yùn)行該程序時,輸出為:

100
-100

在上面的示例中,我們聲明了一個類型為 Int 的變量 highScore。首先,我們將其賦值為100,因此 print (highScore)在屏幕上輸出100。

后來,我們使用賦值運(yùn)算符 highScore =-100 將值更改為 -100,因此,在屏幕上打印(highScore) output-100。

讓我們來看看SWIFT中Int類型的一些變體。

Int8(整數(shù))

  • 可以存儲正數(shù)和負(fù)數(shù)的整數(shù)類型的變體。

  • 默認(rèn)值:0

  • 大小:8位

  • 范圍:-128 至 127

一個Int8整數(shù)可以總共存儲2 8 =(256)個值。即它可以存儲 0 到 255之間的數(shù)字。

但是由于 Int8 包括正數(shù)和負(fù)數(shù),我們可以存儲從-128到127的數(shù)字,包括0,總計為256個值或數(shù)字。

var highScore:Int8 = -128//正確
highScore = 127 //正確
highScore = 128 //錯誤
highScore = -129 //錯誤

您還可以使用 Swift函數(shù) 內(nèi)置的.min和.max找出類型可以存儲的最大和最小值。

示例3:最大和最小 Int8數(shù)據(jù)類型

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

運(yùn)行該程序時,輸出為:

-128
127

UInt(無符號整數(shù))

  • 整數(shù)類型的變體,稱為UInt(無符號整數(shù)),只能存儲無符號數(shù)字(正數(shù)或零)。

  • 默認(rèn)值:0

  • 大小:32/64位取決于平臺類型。

  • 范圍:0 至 4294967295(32位平臺)
    0 至 18446744073709551615(64位平臺)

示例4:UInt數(shù)據(jù)類型

var highScore:UInt = 100
highScore = -100 //嘗試執(zhí)行以下操作時出現(xiàn)編譯時錯誤

上面的代碼將拋出編譯時錯誤,因為無符號整數(shù)只能存儲 0 或 正值。嘗試在無符號整數(shù)中存儲負(fù)值會給您拋出一個錯誤。

Float(浮點數(shù))

  • 聲明為浮點型的變量或常量可以存儲帶小數(shù)點或小數(shù)點的數(shù)字。

  • 默認(rèn)值:0.0

  • 大小:32位浮點數(shù)。

  • 范圍:1.2 * 10 -38至3.4 * 10 38(?6位數(shù)字)

示例5:浮點數(shù)據(jù)類型

let highScore:Float = 100.232
print(highScore)

運(yùn)行該程序時,輸出為:

100.232

Double(雙精度浮點數(shù))

  • 聲明為 Double 類型的變量/常量也將帶有小數(shù)點或小數(shù)點的數(shù)字存儲為 Float,但是比 Float 支持更大的小數(shù)點。

  • 默認(rèn)值:0.0

  • 大小:64位浮點數(shù)。(因此,Double類型的變量可以存儲帶小數(shù)或小數(shù)點大于Float支持的數(shù)字)

  • 范圍:2.3×10 -308?1.7 * 10 308(?15位)

示例6:雙精度數(shù)據(jù)類型

let highScore:Double = 100.232321212121
print(highScore)

運(yùn)行該程序時,輸出為:

100.232321212121

Character(字符)

  • 聲明為Character類型的變量/常量可以存儲單字符字符串字面量。

  • 您可以在Swift中使用轉(zhuǎn)義序列\(zhòng)u{n}(Unicode字符,n為十六進(jìn)制)將emoji或英語以外的語言作為字符。

示例7:字符數(shù)據(jù)類型

let playerName:Character = "J"
let playerNameWithUnicode:Character = "\u{134}"
print(playerName)
print(playerNameWithUnicode)

運(yùn)行該程序時,輸出為:

J
?

String(字符串)

  • 聲明為String類型的變量或常量可以存儲字符集合。

  • 默認(rèn)值“”(空字符串)

  • 它是值類型。

  • 您可以使用for-in循環(huán)遍歷字符串。參考Swift for-in循環(huán)。

  • Swift還支持一些特殊的轉(zhuǎn)義序列以在字符串中使用它們。例如,

    • \0 (空字符),

    • \\ (一個普通的反斜杠\),

    • \t (制表符),

    • \v (垂直標(biāo)簽),

    • \r (回車),

    • \" (雙引號),

    • \' (單引號),和

    • \u{n} (unicode字符串,n以十六進(jìn)制表示)。

示例8:字符串?dāng)?shù)據(jù)類型

let playerName = "Jack"
let playerNameWithQuotes = "\"Jack\""
let playerNameWithUnicode = "\u{134}ack"
print(playerName)
print(playerNameWithQuotes)
print(playerNameWithUnicode)

運(yùn)行該程序時,輸出為:

Jack
"Jack"
?ack

請參考Swift字符和字符串,以了解有關(guān)字符和字符串的聲明,操作和示例的更多信息。

除了這種數(shù)據(jù)類型外,Swift中還有其他高級數(shù)據(jù)類型,例如 tupleoptional,rangeclass,structure 等。您將在后面的章節(jié)中學(xué)習(xí)。

要記住的事情

1.由于 Swift 是一種類型推斷語言,變量或常量可以從存儲的值中自動推斷類型。因此,您可以在創(chuàng)建變量或常量時跳過類型。然而,你可以考慮為了可讀性而寫類型,但不推薦這樣做。

示例9:類型推斷的變量/常量

let playerName = "Jack"
print(playerName)

Swift編譯器可以根據(jù)其值自動推斷該變量為 String 類型。

2. Swift是一種類型安全的語言。如果將變量定義為某種類型,則以后不能使用其他數(shù)據(jù)類型進(jìn)行更改。

示例10:Swift是一種類型安全的語言

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

上面的代碼將產(chǎn)生一個錯誤,因為我們已經(jīng)指定變量playerName將為String。 因此我們無法在其中存儲一個整數(shù)。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清