1.常量和變量swift
常量: let數組
變量: var 安全
2.聲明常量和變量spa
常量的聲明: let3d
let a = 1 //末尾能夠不加分號,等號兩邊的空格必須對應(同時有/沒有)調試
變量的聲明: var 對象
var b = 2字符串
b = 3 //更改值string
3.類型的標註io
var c : Int = 4
var d : Double = 3.1415926
var f : Character = "a" //單個字符 也用雙引號 ""
var g : String = "asdf" //不一樣於OC ,不在須要@
4.命名
//同OC:不能以數字開頭,不能使用特殊符號,不能使用關鍵字
let abc = 2
let 🐱 = 3
let 中國 = 4 //可使用中文
5.輸出
print(abc,中國) //直接輸出變量/常量名,不須要@ 和雙引號""
拼接格式: "反斜線+ 括號" \( )
print ("中國是:\(中國)")
6.註釋方式
同OC
7.分號
//swift中,當一行上只有一條代碼時:分號;能夠寫,也能夠不寫
//當一行上有多條代碼:分號必須寫
var g = 5; var h = 6
//8.整數及 浮點數
//整數
let i : Int = 10
//浮點數
let j : Float = 6.77
let k : Double = 9.88
//9.類型安全及類型判斷
//swift中自動判斷數據類型,不會將一個錯誤的類型傳給咱們使用
var i = 7 //默認是int
var pi = 3.144444444444 //默認是double
var q = "u" //默認是string
//let ss = i * 3.14 會報錯,連個不一樣類型的操做,不能夠
//10.數據類型轉換(整數與浮點數的轉換/字符串與整數的轉換)
//整數與浮點
//將類型寫在前面,將想要轉換的變量用小括號括起來
var w = Double(i)
var ff = Double(i) * 3.14 //只有相同的類型,才能一塊兒操做
var piInt = Int(pi)
//字符串與整數的轉換:要求作到有意義的轉換
//let str1 = Int("asdfasdf") //無心義
let str1 = Int("123456")
11.類型別名
typelias char = Character //新名爲char
var ch1 : char = "a"
12.布爾類型 BOOL (true false)
var bool : BOOL = true
13.元祖(不一樣於數組,元祖類型能夠不一樣,元素個數最好不要大於7 )
聲明元祖
方式一:
let yuanzu = (404,"NotFound")
方式二:
let (a,b) = (123,"abc")
14.可選類型 ?
//在聲明可選類型時,將問號? 放到類型的後面,則將變量設置成可選類型. 可選類型的變量默認值爲nil(只有可選類型的變量才能爲nil)
var optional : Int ? // ? 表明可選的,能夠不賦值
var optional : Int ? = 10 //賦值
15.強制解析
//將一個可選類型的變量,轉換成通常類型的變量,才能使用:取值的時候,在變量後面加上感嘆號!
print(optional ! )
16.可選綁定
// let 名 = 以前的一個可選類型的變量
if let x = optional{
print(x)
}else{
print("空")
}
17.隱式解析 可選類型
//將一個可選類型的對象,變爲一個能夠進行自動解析的可選類型,其實就是將 ! 在聲明時候放到類型的後面,而不是在取值的時候放到對象的後面
// ? 能夠爲nil
// ! 必須有值,不能爲nil
var int12 : Int! = 12
print(int12) //取值的時候就不須要加 !
//18.使用斷言進行調試 assert
//斷言,只是作輔助調試使用,沒有實際意義
//當條件成立,代碼繼續向下執行,不影響總體工程;條件不成立,運行時會崩潰到這裏
var int13 : Int = 13
assert(int13 < 100) //該條件成立,則會繼續向下執行
print("adfasdf")
19.運算符
1.賦值運算符
2.算術運算符
//取餘運算可有對小數取餘
let yushu = 5.5%2.5
3.組合賦值運算符 += -=
4.比較運算符 < > >= <=
5.三目運算符 條件?答案一:答案二
6.空合運算符 可選對象一??可選對象二
當可選對象一 爲nil時,選擇可選對象二使用 ,若是可選對象一有值,使用可選對象一
var kong1 : Int?
var kong2 : Int? = 6
let kong3 = kong1 ?? kong2
print(kong3)
7.區間運算符 ...三個點
1...5 //表明1,2,3,4,5
8.半開區間運算符 ..<
1..<5 //表明1,2,3,4 不包含5
//9.邏輯運算符 && || !
//swift3.0 補充**************************************************8
//1.可選項爲空 的判斷解決
//每次解析前用 if 或者用 ??(三目運算) 判斷,防止崩潰
func demo(x:Int?,y:Int?) {
// let x:Int? = 10;
// let y:Int? = 200
//強制解包有風險
//1.判斷
if x != nil && y != nil {
print(x! + y!)
}else{
}
//2. ?? 至關於一個簡單的三目
print((x ?? 0) + (y ?? 0))
}
//使用 ! 強制解析, 有風險,若是爲空,則崩潰
//有如下兩種方式:(不須要強制解析)
一. if let/var 連用,判斷對象是否爲nil,不須要強制解析
func demo2() {
let oName:String? = "laowang";
let oAge:Int? = 11
if let name = oName,let age = oAge {
print(name + String(age))
}
}
二,guard ler/var (與if let 相反)
//guard 守衛(必定有值,沒有值返回)
func demo3() {
let oName:String? = "laowang";
let oAge:Int? = 11
guard let name = oName, let age = oAge else{
print("nil")
return;
}
//代碼若執行到這裏,必定有值,前面guard 已經作了判斷
print(name + String(age))
}