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

在我們使用任何程序語言編程時(shí)稻爬,需要使用各種數(shù)據(jù)類型來存儲(chǔ)不同的信息移层。

變量的數(shù)據(jù)類型決定了如何將代表這些值的位存儲(chǔ)到計(jì)算機(jī)的內(nèi)存中聂抢。在聲明變量時(shí)也可指定它的數(shù)據(jù)類型蒂窒。

所有變量都具有數(shù)據(jù)類型膀估,以決定能夠存儲(chǔ)哪種數(shù)據(jù)幔亥。

內(nèi)置數(shù)據(jù)類型

Swift 提供了非常豐富的數(shù)據(jù)類型,以下列出了常用了幾種數(shù)據(jù)類型:

Int

一般來說察纯,你不需要專門指定整數(shù)的長(zhǎng)度帕棉。Swift 提供了一個(gè)特殊的整數(shù)類型Int,長(zhǎng)度與當(dāng)前平臺(tái)的原生字長(zhǎng)相同:

在32位平臺(tái)上饼记,Int和Int32長(zhǎng)度相同笤昨。

在64位平臺(tái)上,Int和Int64長(zhǎng)度相同握恳。

除非你需要特定長(zhǎng)度的整數(shù)瞒窒,一般來說使用Int就夠了。這可以提高代碼一致性和可復(fù)用性乡洼。即使是在32位平臺(tái)上崇裁,Int可以存儲(chǔ)的整數(shù)范圍也可以達(dá)到-2,147,483,648~2,147,483,647,大多數(shù)時(shí)候這已經(jīng)足夠大了束昵。

UInt

Swift 也提供了一個(gè)特殊的無符號(hào)類型UInt拔稳,長(zhǎng)度與當(dāng)前平臺(tái)的原生字長(zhǎng)相同:

在32位平臺(tái)上,UInt和UInt32長(zhǎng)度相同锹雏。

在64位平臺(tái)上巴比,UInt和UInt64長(zhǎng)度相同。

注意:

盡量不要使用UInt礁遵,除非你真的需要存儲(chǔ)一個(gè)和當(dāng)前平臺(tái)原生字長(zhǎng)相同的無符號(hào)整數(shù)轻绞。除了這種情況,最好使用Int佣耐,即使你要存儲(chǔ)的值已知是非負(fù)的政勃。統(tǒng)一使用Int可以提高代碼的可復(fù)用性,避免不同類型數(shù)字之間的轉(zhuǎn)換兼砖,并且匹配數(shù)字的類型推斷奸远,請(qǐng)參考類型安全和類型推斷。

浮點(diǎn)數(shù)

浮點(diǎn)數(shù)是有小數(shù)部分的數(shù)字讽挟,比如3.14159懒叛,0.1和-273.15。

浮點(diǎn)類型比整數(shù)類型表示的范圍更大耽梅,可以存儲(chǔ)比Int類型更大或者更小的數(shù)字薛窥。Swift 提供了兩種有符號(hào)浮點(diǎn)數(shù)類型:

Double表示64位浮點(diǎn)數(shù)。當(dāng)你需要存儲(chǔ)很大或者很高精度的浮點(diǎn)數(shù)時(shí)請(qǐng)使用此類型褐墅。

Float表示32位浮點(diǎn)數(shù)拆檬。精度要求不高的話可以使用此類型洪己。

注意:

Double精確度很高,至少有15位數(shù)字竟贯,而Float最少只有6位數(shù)字答捕。選擇哪個(gè)類型取決于你的代碼需要處理的值的范圍。

布爾值

Swift 有一個(gè)基本的布爾(Boolean)類型屑那,叫做Bool拱镐。布爾值指邏輯上的值,因?yàn)樗鼈冎荒苁钦婊蛘呒俪旨省wift 有兩個(gè)布爾常量沃琅,true和false。

字符串

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

"Hello, World!"

字符

字符指的是單個(gè)字母益眉,例如:

"C"

可選類型

使用可選類型(optionals)來處理值可能缺失的情況±逊荩可選類型表示有值或沒有值郭脂。

數(shù)值范圍

下表顯示了不同變量類型內(nèi)存的存儲(chǔ)空間,及變量類型的最大最小值:

類型 大谐呵浮(字節(jié)) 區(qū)間值

Int8 1 字節(jié) -127 到 127

UInt8 1 字節(jié) 0 到 255

Int32 4 字節(jié) -2147483648 到 2147483647

UInt32 4 字節(jié) 0 到 4294967295

Int64 8 字節(jié) -9223372036854775808 到 9223372036854775807

UInt64 8 字節(jié) 0 到 18446744073709551615

Float 4 字節(jié) 1.2E-38 到 3.4E+38 (~6 digits)

Double 8 字節(jié) 2.3E-308 到 1.7E+308 (~15 digits)

類型別名

類型別名對(duì)當(dāng)前的類型定義了另一個(gè)名字展鸡,類型別名通過使用 typealias 關(guān)鍵字來定義。語法格式如下:

typealias newname = type

例如以下定義了 Int 的類型別名為 Feet:

typealias Feet = Int

現(xiàn)在埃难,我們可以通過別名來定義變量:

import Cocoa

typealias Feet = Int

var distance: Feet = 100

print(distance)

我們使用 playground 執(zhí)行以上程序莹弊,輸出結(jié)果為:

100

類型安全

Swift 是一個(gè)類型安全(type safe)的語言。

由于 Swift 是類型安全的涡尘,所以它會(huì)在編譯你的代碼時(shí)進(jìn)行類型檢查(type checks)忍弛,并把不匹配的類型標(biāo)記為錯(cuò)誤。這可以讓你在開發(fā)的時(shí)候盡早發(fā)現(xiàn)并修復(fù)錯(cuò)誤悟衩。

import Cocoa

var varA = 42

varA = "This is hello"

print(varA)

以上程序剧罩,會(huì)在 Xcode 中報(bào)錯(cuò):

error: cannot assign value of type 'String' to type 'Int'

varA = "This is hello"

意思為不能將 'String' 字符串賦值給 'Int' 變量。

類型推斷

當(dāng)你要處理不同類型的值時(shí)座泳,類型檢查可以幫你避免錯(cuò)誤。然而幕与,這并不是說你每次聲明常量和變量的時(shí)候都需要顯式指定類型挑势。

如果你沒有顯式指定類型,Swift 會(huì)使用類型推斷(type inference)來選擇合適的類型啦鸣。

例如潮饱,如果你給一個(gè)新常量賦值42并且沒有標(biāo)明類型,Swift 可以推斷出常量類型是Int诫给,因?yàn)槟憬o它賦的初始值看起來像一個(gè)整數(shù):

let meaningOfLife = 42

// meaningOfLife 會(huì)被推測(cè)為 Int 類型

同理香拉,如果你沒有給浮點(diǎn)字面量標(biāo)明類型啦扬,Swift 會(huì)推斷你想要的是Double:

let pi = 3.14159

// pi 會(huì)被推測(cè)為 Double 類型

當(dāng)推斷浮點(diǎn)數(shù)的類型時(shí),Swift 總是會(huì)選擇Double而不是Float凫碌。

如果表達(dá)式中同時(shí)出現(xiàn)了整數(shù)和浮點(diǎn)數(shù)扑毡,會(huì)被推斷為Double類型:

let anotherPi = 3 + 0.14159

// anotherPi 會(huì)被推測(cè)為 Double 類型

原始值3沒有顯式聲明類型,而表達(dá)式中出現(xiàn)了一個(gè)浮點(diǎn)字面量盛险,所以表達(dá)式會(huì)被推斷為Double類型瞄摊。

實(shí)例

import Cocoa

// varA 會(huì)被推測(cè)為 Int 類型

var varA = 42

print(varA)

// varB 會(huì)被推測(cè)為 Double 類型

var varB = 3.14159

print(varB)

// varC 也會(huì)被推測(cè)為 Double 類型

var varC = 3 + 0.14159

print(varC)

執(zhí)行以上代碼,輸出結(jié)果為:

42

3.14159

3.14159

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苦掘,一起剝皮案震驚了整個(gè)濱河市换帜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鹤啡,老刑警劉巖惯驼,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異递瑰,居然都是意外死亡祟牲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門泣矛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疲眷,“玉大人,你說我怎么就攤上這事您朽】袼浚” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵哗总,是天一觀的道長(zhǎng)几颜。 經(jīng)常有香客問我,道長(zhǎng)讯屈,這世上最難降的妖魔是什么蛋哭? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮涮母,結(jié)果婚禮上谆趾,老公的妹妹穿的比我還像新娘。我一直安慰自己叛本,他們只是感情好沪蓬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著来候,像睡著了一般跷叉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天云挟,我揣著相機(jī)與錄音梆砸,去河邊找鬼。 笑死园欣,一個(gè)胖子當(dāng)著我的面吹牛帖世,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俊庇,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼狮暑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了辉饱?” 一聲冷哼從身側(cè)響起搬男,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彭沼,沒想到半個(gè)月后缔逛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姓惑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年褐奴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片于毙。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敦冬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唯沮,到底是詐尸還是另有隱情脖旱,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布介蛉,位于F島的核電站萌庆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏币旧。R本人自食惡果不足惜践险,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吹菱。 院中可真熱鬧巍虫,春花似錦、人聲如沸鳍刷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倾剿。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間前痘,已是汗流浹背凛捏。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芹缔,地道東北人坯癣。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像最欠,于是被迫代替她去往敵國(guó)和親示罗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 不論在使用什么程序語言編程時(shí)芝硬,都是需要使用各種數(shù)據(jù)類型來存儲(chǔ)不同的信息蚜点。變量的數(shù)據(jù)類型決定了如何將代表這些值的位存...
    奔跑的_猿閱讀 212評(píng)論 0 1
  • 在我們使用任何程序語言編程時(shí),需要使用各種數(shù)據(jù)類型來存儲(chǔ)不同的信息拌阴。變量的數(shù)據(jù)類型決定了如何將代表這些值的位存儲(chǔ)到...
    kled_net閱讀 126評(píng)論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,819評(píng)論 1 10
  • 我的爺爺是個(gè)十分自律的绍绘。自奶奶離世后,他拒絕了和子女同住的建議迟赃,自己一人生活陪拘。日子雖有些單調(diào),卻異常的充實(shí)纤壁∽蠊簦看完天...
    藍(lán)淚兒521閱讀 519評(píng)論 0 0
  • 秋風(fēng)瑟瑟 秋天即將過去 冬天馬上來臨 十一假期結(jié)束了,工作逐步步入了正規(guī)酌媒,平日的接觸的最多的就是工作 欠痴,就同事了,...
    forwarder閱讀 102評(píng)論 0 0