基本數(shù)據(jù)類型

整數(shù)

整數(shù)就是沒有小數(shù)部分的數(shù)字汗唱,比如 42 和 -23 。整數(shù)可以是有符號(正丈攒、負哩罪、零)或者 無符號(正、零)巡验。

Swift 提供了 8际插,16,32 和 64 位的有符號和無符號整數(shù)類型显设。這些整數(shù)類型和 C 語言的命名方式很像框弛,比如 8 位無符號整數(shù)類型是 UInt8,32 位有符號整數(shù)類型是 Int32 捕捂。就像 Swift 的其他類型一樣瑟枫,整數(shù)類型采用大寫命名法。

你可以訪問不同整數(shù)類型的 min 和 max 屬性來獲取對應(yīng)類型的最小值和最大值:

let minValue = UInt8.min  // minValue 為 0指攒,是 UInt8 類型
let maxValue = UInt8.max  // maxValue 為 255慷妙,是 UInt8 類型

Int

一般來說,你不需要專門指定整數(shù)的長度允悦。Swift 提供了一個特殊的整數(shù)類型 Int膝擂,長度與當(dāng)前平臺的原生字長相同:

  • 在 32 位平臺上,Int 和 Int32 長度相同隙弛。
  • 在 64 位平臺上架馋,Int 和 Int64 長度相同。

除非你需要特定長度的整數(shù)全闷,一般來說使用 Int 就夠了叉寂。這可以提高代碼一致性和可復(fù)用性。即使是在 32 位平臺上总珠,Int 可以存儲的整數(shù)范圍也可以達到 -2,147,483,648 ~ 2,147,483,647 办绝,大多數(shù)時候這已經(jīng)足夠大了。

UInt

Swift 也提供了一個特殊的無符號類型 UInt姚淆,長度與當(dāng)前平臺的原生字長相同:

  • 在32位平臺上,UInt 和 UInt32 長度相同屡律。
  • 在64位平臺上腌逢,UInt 和 UInt64 長度相同。

注意:盡量不要使用 UInt超埋,除非你真的需要存儲一個和當(dāng)前平臺原生字長相同的無符號整數(shù)搏讶。除了這種情況佳鳖,最好使用 Int,即使你要存儲的值已知是非負的媒惕。統(tǒng)一使用 Int 可以提高代碼的可復(fù)用性系吩,避免不同類型數(shù)字之間的轉(zhuǎn)換,并且匹配數(shù)字的類型推斷

浮點數(shù)

浮點數(shù)是有小數(shù)部分的數(shù)字妒蔚,比如 3.14159 穿挨,0.1 和 -273.15。

浮點類型比整數(shù)類型表示的范圍更大肴盏,可以存儲比 Int 類型更大或者更小的數(shù)字科盛。Swift 提供了兩種有符號浮點數(shù)類型:

Double 表示 64 位浮點數(shù)。當(dāng)你需要存儲很大或者很高精度的浮點數(shù)時請使用此類型菜皂。

Float 表示 32 位浮點數(shù)贞绵。精度要求不高的話可以使用此類型。

注意:Double 精確度很高恍飘,至少有 15 位數(shù)字榨崩,而 Float 只有 6 位數(shù)字。選擇哪個類型取決于你的代碼需要處理的值的范圍章母,在兩種類型都匹配的情況下母蛛,將優(yōu)先選擇 Double。

Objective-c 與 Swift 基本數(shù)據(jù)類型對比

image.png

image.png

數(shù)值型類型轉(zhuǎn)換

通常來講胳施,即使代碼中的整數(shù)常量和變量已知非負溯祸,也請使用 Int 類型∥杷粒總是使用默認的整數(shù)類型可以保證你的整數(shù)常量和變量可以直接被復(fù)用并且可以匹配整數(shù)類字面量的類型推斷焦辅。

只有在必要的時候才使用其他整數(shù)類型,比如要處理外部的長度明確的數(shù)據(jù)或者為了優(yōu)化性能椿胯、內(nèi)存占用等等筷登。使用顯式指定長度的類型可以及時發(fā)現(xiàn)值溢出并且可以暗示正在處理特殊數(shù)據(jù)。

/// 整數(shù)轉(zhuǎn)換
let a: Int = 10
let b: UInt16 = 1_00
//let sum = a + b   Swift中不同類型不能直接運算
let result = UInt16(a) + b  // 110


/// 整數(shù)和浮點數(shù)轉(zhuǎn)換
let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine
// pi 等于 3.14159哩盲,所以被推測為 Double 類型
// 常量 three 的值被用來創(chuàng)建一個 Double 類型的值前方,所以加號兩邊的數(shù)類型須相同。如果不進行轉(zhuǎn)換廉油,兩者無法相加惠险。

let integerPi = Int(pi)
// integerPi 等于 3,所以被推測為 Int 類型
// 當(dāng)用這種方式來初始化一個新的整數(shù)值時抒线,浮點值會被截斷班巩。也就是說 4.75 會變成 4,-3.9 會變成 -3嘶炭。(將大容量的東西放到小容量的地方會損失精度)

數(shù)值型字面量

整數(shù)字面量可以被寫作:

  • 一個十進制數(shù)抱慌,沒有前綴
  • 一個二進制數(shù)逊桦,前綴是0b
  • 一個八進制數(shù),前綴是0o
  • 一個十六進制數(shù)抑进,前綴是0x
let decimalInteger = 17
let binaryInteger = 0b10001       // 二進制的17
let octalInteger = 0o21           // 八進制的17
let hexadecimalInteger = 0x11     // 十六進制的17

浮點字面量可以是十進制(沒有前綴)或者是十六進制(前綴是 0x )强经。小數(shù)點兩邊必須有至少一個十進制數(shù)字(或者是十六進制的數(shù)字)。十進制浮點數(shù)也可以有一個可選的指數(shù)(exponent)寺渗,通過大寫或者小寫的 e 來指定匿情;十六進制浮點數(shù)必須有一個指數(shù),通過大寫或者小寫的 p 來指定户秤。

如果一個十進制數(shù)的指數(shù)為 exp码秉,那這個數(shù)相當(dāng)于基數(shù)和10^exp的乘積:

  • 1.25e2 表示 1.25 × 10^2,等于 125.0鸡号。
  • 1.25e-2 表示 1.25 × 10^-2转砖,等于 0.0125。

如果一個十六進制數(shù)的指數(shù)為exp鲸伴,那這個數(shù)相當(dāng)于基數(shù)和2^exp的乘積:

  • 0xFp2 表示 15 × 2^2府蔗,等于 60.0。
  • 0xFp-2 表示 15 × 2^-2汞窗,等于 3.75姓赤。

下面的這些浮點字面量都等于十進制的12.1875:

let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0

數(shù)值類字面量可以包括額外的格式來增強可讀性。整數(shù)和浮點數(shù)都可以添加額外的零并且包含下劃線仲吏,并不會影響字面量:

let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1
let num = 1_0000000

類型別名

類型別名(type aliases)就是給現(xiàn)有類型定義另一個名字不铆。你可以使用 typealias 關(guān)鍵字來定義類型別名。

// myInt 是 Int 的別名
typealias myInt = Int

let demo: myInt = 10
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裹唆,一起剝皮案震驚了整個濱河市誓斥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌许帐,老刑警劉巖劳坑,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異成畦,居然都是意外死亡距芬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門循帐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來框仔,“玉大人,你說我怎么就攤上這事拄养〈婧停” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捐腿。 經(jīng)常有香客問我,道長柿顶,這世上最難降的妖魔是什么茄袖? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮嘁锯,結(jié)果婚禮上宪祥,老公的妹妹穿的比我還像新娘。我一直安慰自己家乘,他們只是感情好蝗羊,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仁锯,像睡著了一般耀找。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上业崖,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天野芒,我揣著相機與錄音,去河邊找鬼双炕。 笑死狞悲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妇斤。 我是一名探鬼主播摇锋,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼脑又,長吁一口氣:“原來是場噩夢啊……” “哼攒盈!你這毒婦竟也來了琅攘?” 一聲冷哼從身側(cè)響起浪腐,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤来颤,失蹤者是張志新(化名)和其女友劉穎堕义,沒想到半個月后哀军,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墨吓,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡媳纬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年双肤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钮惠。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡茅糜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出素挽,到底是詐尸還是另有隱情蔑赘,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站缩赛,受9級特大地震影響耙箍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酥馍,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一辩昆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧旨袒,春花似錦汁针、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至必孤,卻和暖如春猾骡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隧魄。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工卓练, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人购啄。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓襟企,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狮含。 傳聞我的和親對象是個殘疾皇子顽悼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

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