Swift學(xué)習(xí)_基礎(chǔ)語(yǔ)法之常量&變量&數(shù)據(jù)顯示轉(zhuǎn)換&可選類型

Swift

目錄

1.聲明一個(gè)變量打印
2.數(shù)據(jù)類型的顯式轉(zhuǎn)換
3.常量和變量的輸出

  1. 直接輸出
  2. 輸出多個(gè)變量
  3. 使用占位符將變量或者常量加入到字符串中輸出
  4. 將上面組合輸出

4.簡(jiǎn)單數(shù)據(jù)類型

  1. 整形
  2. 浮點(diǎn)型 Double和Float
  3. Bool 布爾類型

5.可選類型

  1. 可選常量
  2. 可選變量
  3. 解包
  4. 隱式解析可選類型

小結(jié)

1.聲明一個(gè)變量打印

Swift中,漢字和圖片表情都可以作為變量名
var start:String;
start = "Hello world"            
print(start)              // 輸出 Hello world
start = "HarrySun"
print(start)              // 輸出HarrySun


//var name   // 這樣聲明編譯報(bào)錯(cuò)摊滔,要么說明類型灭抑,要么賦值统翩,讓編譯器自動(dòng)判斷類型爽雄。



var start2 = "hello world"  // 自動(dòng)判斷為String,
print(start2)      // 輸出 hello world
//start = 10  // 因?yàn)閟tart被自動(dòng)判斷為String跌宛,所有start被賦值10它改,會(huì)編譯出錯(cuò)



let a:Int = 10
let b = 10  // 類型自動(dòng)判斷為Int
let c = 100,d = 20, e = 30
print(e)        // 輸出 30


let width = 100.0  // 類型自動(dòng)判斷為Double
print(width)        // 輸出 100.0

2.數(shù)據(jù)類型的顯式轉(zhuǎn)換

let numA = 10
let numB = 20.5
//let num1 = numA + numB  //  這里會(huì)系統(tǒng)自動(dòng)報(bào)錯(cuò)因?yàn)榛家冢到y(tǒng)不會(huì)自己進(jìn)行隱式類型轉(zhuǎn)換,必須手動(dòng)的進(jìn)行顯式轉(zhuǎn)換厚脉。

let num1 = numA + Int(numB)
let num2 = Double(numA) + numB;
// 此時(shí)得到的num1和num2類型完全不一樣习寸,num1是Int類型,而num2是Double類型的

注意:在swift中傻工,不允許任何形式的數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換霞溪,只能強(qiáng)制轉(zhuǎn)換

3.常量和變量的輸出

1) 直接輸出
// 漢字和圖片表情都可以作為變量名
let name = "HarrySun"
print(name)              // 輸出 HarrySun

let 浩子 = "haozi"  
print(浩子)              // 輸出 haozi          

var ?? = "笑"          
print(??)              // 輸出 笑        

let ?? = 100         
print(??)              // 輸出 100  
2) 輸出多個(gè)變量
print(??,??)              // 輸出 笑 100
print(name,字符串)              // 輸出 HarrySun haozi
3) 使用占位符將變量或者常量加入到字符串中輸出
let city = "Beijing"
print("welcome to \(city)")              // 輸出 welcome to Beijing
print("\(??) 一個(gè)")              // 輸出 笑 一個(gè)
4) 將上面組合輸出
print("歡迎來到\(city),來,\(??)一個(gè),", 浩子)              // 輸出 歡迎來到Beijing,來中捆,笑一個(gè), haozi

4.簡(jiǎn)單數(shù)據(jù)類型

1) 整形

** 分為有符號(hào)和無符號(hào)的整形鸯匹,也分為8位,16位泄伪,32位的殴蓬,64位的,這不同位的和平臺(tái)沒有任何關(guān)系,只有Int和UInt與平臺(tái)有關(guān)系 **

let minA = UInt8.min  // 獲取無符號(hào)的8位數(shù)的最小值蟋滴,
let maxA = UInt8.max  // 獲取無符號(hào)的8位數(shù)的最小值染厅,
let numB:UInt16 = 100
print(numB)

// var maxC:UInt8 = 289  // 編譯報(bào)錯(cuò),因?yàn)?89超出255最大值的值
var maxC:UInt8 = 240
print(maxC)
2) 浮點(diǎn)型 Double和Float

Double是64位浮點(diǎn)型編譯器根據(jù)自動(dòng)判斷的類型津函,也是系統(tǒng)默認(rèn)的類型糟秘,如何要用Float(32位低精度浮點(diǎn)型),在定義變量時(shí)必須說明Float

let  width = 100.5   // width 默認(rèn)Double
let height:Float = 20  // height是Float的低精度浮點(diǎn)型,具體值是20.0

// 常見提示-------以下都是正確的表示球散,為了提高數(shù)值的易讀性--------
let a = 3_500_000  // 此時(shí)的a是3500000下劃線是分隔數(shù)值用的
print(a)  //編譯通過

var b = 003.5  // 此時(shí)的b是3.5

var c = 1.25e2 // 表示1.25 * 10^2 等于 1.25*100 就是125
3) Bool 布爾類型

在oc中非0即真,但是在swift只有2個(gè)值屬于Bool類型 就是false和true

let hasResult = true
var hasError = false

5.可選類型

1) 可選常量

**let 常量名 :常量類型? = 常量值 **

let a:Int?
// 聲明可選常量必須指定常量的常量類型蕉堰,常量類型可以是任何類型的數(shù)值凌净,也可以是nil,等以后再賦值
// print(a) 這里編譯報(bào)錯(cuò)屋讶,因?yàn)榭蛇x常量a 沒有賦值  在使用前必須進(jìn)行賦值
2) 可選變量
// var 變量名:變量類型 = 變量值
// var b:Int
// print(b)  這里會(huì)編譯出錯(cuò)冰寻,因?yàn)閎是Int沒有賦值,使用時(shí)要賦值皿渗,如果是Int可選類型斩芭,這里就可以編譯通過,表示nil

var c:Int?
print(c)          // 輸出 nil

var d:Int? = 10  //給可選變量賦值以后乐疆,   它的值就是實(shí)際值
print(d)        // 輸出 Optional(10)

var e:Int? = 10
e = nil

// 只有可選類型可以賦值划乖,非可選類型不能賦值,例如下班這個(gè)會(huì)報(bào)錯(cuò)
var f:Int = 100
// f = nil  此時(shí)編譯報(bào)錯(cuò)   所有說只有可選型類型可以為nil 其他都不可以
3) 解包
var g:Int? = 10
// print(10 + g)  此時(shí)編譯報(bào)錯(cuò),可選類型不能直接參與計(jì)算
// 此時(shí)就需要解包挤土,“琴庵!”

print(g!+10)       // 輸出 20
// 這樣就編譯通過了進(jìn)行解包就可以用參與運(yùn)算,但是這里的前提是可選類型必須有實(shí)際值仰美,如果為nil迷殿,就不能解包參與運(yùn)算,例如下面

// print(10 + c!) 編譯失敗咖杂,因?yàn)閏為nil 庆寺,所有在強(qiáng)制解包時(shí) 一定要保證可選類型非nil的,方法是通過if語(yǔ)句提前進(jìn)行判斷诉字;不然解包不安全懦尝,程序會(huì)crash掉


var name: String? = "loveway"
if name != nil {
    print("My name is " + name!)     // 輸出 My name is loveway
} else {
    print("name is nil")
}

//判空可以解決這個(gè)不安全問題,但是這樣寫比較麻煩奏窑,可以用if let 解包

var name2:String? = "HarrySun"
if let name3 = name2 {
    // 這里面只能用if let 解包后的常量名
    print("My name is " + name3)      // 輸出 My name is HarrySun
}else {
    print("name is nil")
}


  // 這里叫可選綁定导披,會(huì)進(jìn)行以下兩部操作
  // 1>判斷book是否有值,如果沒有值埃唯,直接不執(zhí)行{}
  // 2>如果book有值撩匕,系統(tǒng)會(huì)自動(dòng)將name進(jìn)行解包,并且將解包后的結(jié)果墨叛,賦值給book2

var book:String? = nil
if let book2 = book {
    // 這里面只能用if let 解包后的常量名
    print("Book name is " + book2)         
}else{
    print("book name is nil")        // 輸出 book name is nil
}
4) 隱式解析可選類型
// 對(duì)于可選類型每次解包再參與試用特別麻煩止毕,所有就定了了一個(gè)隱式解析一下可選類型,
// 隱式解析可選類型本質(zhì)是一個(gè)可選類型漠趁,被當(dāng)做一個(gè)自動(dòng)解析的可選類型扁凛,然后就可以被當(dāng)做非可選類型有值得時(shí)候

// 下面是聲明隱式解析的可選常量和變量

var numA:Int! = 10
let numB:Int! = 200

// 下面看一下,可選類型的定義和使用闯传,以及隱式解析可選類型的定義和使用
let schoolName:String? = "北京大學(xué)"
print(schoolName!)      // 輸出 北京大學(xué)

let schoolName2:String! = "清華大學(xué)"
print(schoolName2)      // 輸出 清華大學(xué)

// 由于隱式解析可選類型本質(zhì)是可選類型谨朝,除了在使用的時(shí)候不用每次解包取值之外,其他特征和
// 隱式解析可選類型不能設(shè)為nil,使用的時(shí)候也要進(jìn)行if判斷

if schoolName2 != nil {
    print("學(xué)生名稱")      // 輸出 學(xué)生名稱     
}

// -------------空合并運(yùn)算符 "字币?则披?"---------

let numC:Int? = nil
print(numC ?? 0)       // 輸出 0
// 這里就是說明如果可選類型為nil時(shí),numC就去后面的默認(rèn)值0
// 空合并運(yùn)算符有2個(gè)條件:表達(dá)式a必須是可選型洗出,默認(rèn)值數(shù)據(jù)類型必須和a值的數(shù)據(jù)類型一致

小結(jié)

代碼已上傳至git:
--> 傳送門:Swift_基本語(yǔ)法

附錄

查看完整專欄《Swift學(xué)習(xí)》

有問題歡迎指正以及相互探討 —— CoderSun

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末士复,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子翩活,更是在濱河造成了極大的恐慌,老刑警劉巖菠镇,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗荸,死亡現(xiàn)場(chǎng)離奇詭異辟犀,居然都是意外死亡堂竟,警方通過查閱死者的電腦和手機(jī)出嘹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門烦秩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郎仆,“玉大人只祠,你說我怎么就攤上這事∪偶。” “怎么了抛寝?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)曙旭。 經(jīng)常有香客問我盗舰,道長(zhǎng),這世上最難降的妖魔是什么桂躏? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任钻趋,我火速辦了婚禮,結(jié)果婚禮上剂习,老公的妹妹穿的比我還像新娘蛮位。我一直安慰自己较沪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布土至。 她就那樣靜靜地躺著购对,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陶因。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天垂蜗,我揣著相機(jī)與錄音楷扬,去河邊找鬼。 笑死贴见,一個(gè)胖子當(dāng)著我的面吹牛烘苹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播片部,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼镣衡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了档悠?” 一聲冷哼從身側(cè)響起廊鸥,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辖所,沒想到半個(gè)月后惰说,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缘回,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吆视,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酥宴。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啦吧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拙寡,到底是詐尸還是另有隱情授滓,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布倒庵,位于F島的核電站褒墨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏擎宝。R本人自食惡果不足惜郁妈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绍申。 院中可真熱鬧噩咪,春花似錦顾彰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至仆百,卻和暖如春厕隧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俄周。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工吁讨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人峦朗。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓建丧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親波势。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翎朱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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

  • 由蘋果官網(wǎng)翻譯得來fork自https://github.com/letsswift/The-Swift-Prog...
    佛祖拿屠刀閱讀 797評(píng)論 0 3
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,788評(píng)論 1 10
  • 前言 Swift是一門新的適用于iOS,macOS尺铣,watchOS拴曲,tvOS開發(fā)的編程語(yǔ)言。盡管如此迄埃,Swift的...
    BoomLee閱讀 1,711評(píng)論 0 4
  • 關(guān)于 Swift 重要這個(gè)文檔所包含的準(zhǔn)備信息, 是關(guān)于開發(fā)的 API 和技術(shù)的疗韵。這個(gè)信息可能會(huì)改變, 根據(jù)這個(gè)文...
    無灃閱讀 4,286評(píng)論 1 27
  • 今天我給我的秋葵們?cè)僖淮螠y(cè)量了身高,一號(hào)已經(jīng)6厘米了侄非,二號(hào)8厘米了蕉汪,三號(hào)也是8厘米,四號(hào)是7厘米逞怨。它們現(xiàn)在都有3片...
    jim徐閱讀 1,981評(píng)論 0 0