swift-01-基礎語法

最近在學習swift,期間也看了不少教程和大神的博客,最後把筆記放這裏,方便查看複習~swift

附上學習資料地址:w3cschool-Swift 教程YungFan大神的簡書(推薦看一下,有些知識點總結地簡直通俗易懂)安全

1、基礎知識

一、swift與oc的區別

  1. 分號:swift不須要末尾添加分號,除非幾行代碼連寫在一行的狀況markdown

  2. 空格格式:swift很是注重格式,a = 1b=2 注意等號兩邊空格的格式必須一致函數

  3. 方法調用:oc中[Person saveCall]; ;swift中person.saveCall相似oc的點語法oop

  4. 頭文件:swift不須要導入頭文件就能夠引用其餘類的方法和屬性學習

  5. 枚舉類型:能夠簡寫,直接.枚舉值測試

  6. self:在當前類中訪問屬性或者方法,能夠省略self.spa

  7. 構造函數:oc中[[Person alloc] initWithName:xxx] -> swift中Person(name:xxx)操作系統

  8. #selector:oc中是@selector,swift中是#selector指針

二、類型安全

Swift是一個類型安全(type safe)的語言。
即:用var來聲明瞭一個變量,只能修改對應類型下的值,不能修改數據類型。編譯的時候會進行類型檢查,不匹配的地方會報錯。

var a = 12 
a = "hello"  //定義的是int類型,不能改變類型
複製代碼

三、類型推斷

用let聲明一個常量 或者 用var聲明一個變量的時候,在直接賦值的狀況下,能夠它的省略類型。swift會經過類型推斷來選擇合適的類型

let a = 100 
let b = 3.14 
let c = "hello" 
複製代碼

注意:若是沒有給浮點字面量標明類型,swift會自動推斷爲Double類型:

let a = 3.14159
print(type(of: a))//Double

let b = 3 + 0.14159
print(type(of: b))//Double
複製代碼

四、類型別名

與oc用法同樣,但關鍵字使用 typealias來修飾

//聲明
typealias abc = Int 
//調用
let a: abc = 100 
複製代碼

2、數據類型

一、整型

  • Int(有符號整形:正數、零、負數)
  • UInt(無符號整形:正數、零)

注意事項:

通常不須要設置特定的 Int8, Int16。只寫一個 Int,長度與操做系統有關,比如在32位系統上,寫一個 Int 就和 Int32 同樣。 UInt 也同樣

Int8, Int16, Int32, Int64 分別表示 8 位, 16 位, 32 位, 和 64 位的有符號整數形式。 
UInt8, UInt16, UInt32, UInt64 分別表示 8 位, 16 位, 32 位 和 64 位的無符號整數形式。  
複製代碼

整數範圍:

能夠經過 min 和 max 屬性來訪問每一個整數類型的最小值和最大值:
let minValue = UInt8.min // 最小值是 0, 值的類型是 UInt8
let maxValue = UInt8.max // 最大值是 255, 值得類型是 UInt8

複製代碼

二、浮點

  • Double 表明 64 位的浮點數。
  • Float 表明 32 位的浮點數。

注意事項:

Double 有至少 15 位數字的精度,而 Float 的精度只有 6 位。具體使用哪一種浮點類型取決於代碼須要處理的值範圍。在兩種類型均可以的狀況下,推薦使用 Double 類型。
複製代碼

三、布爾值

Bool,兩個布爾常量:true、false

四、字符串&字符

  • 字符串:String
  • 字符:Character,指單字符

代碼示例:

//寫法1:常量 
let a:Int = 10 

//寫法2:swift會進行類型推斷,能夠省略 
let b = 12 

//寫法3:變量,能夠修改值 
var c = 20 
c = 25 

let d:Float = 3.14 //指定Float類型
let e = 3.15 //默認Double類型
var f = 3.16 //默認Double類型
f = 3.17 
複製代碼

3、字面量

所謂字面量,就是指像特定的數字,字符串或者是布爾值這樣,可以直接了當地指出本身的類型併爲變量進行賦值的值。好比:

let aNumber = 3         //整型字面量
let aString = "Hello"   //字符串字面量
let aBool = true        //布爾值字面量
複製代碼
  • 整型字面量

整型字面量能夠是一個十進制、二進制、八進制、十六進制常量

如下都是17的不一樣進製表示:
//十進制
let decimalInteger = 17 
//二進制,前綴:0b
let binaryInteger = 0b10001 
//八進制,前綴:0o
let octalInteger = 0o21 
// 16進制,前綴:0x
let hexadecimalInteger = 0x11
複製代碼
  • 浮點型字面量

組成:整數部分、小數點、小數部分、指數部分 默認是10進制,也能夠用16進制(加前綴0x)

10進制和exp指數

十進制數與 exp  的指數,結果就等於基數乘以 10exp:

1.25e2 意味着 1.25 x 10^2, 或者 125.0 
1.25e-2  意味着 1.25 x 10^-2, 或者 0.0125 
複製代碼

16進制和exp指數

十六進制數與 exp 指數,結果就等於基數乘以2exp:

0xFp2  意味着 15 x 2^2, 或者 60.0 .
0xFp-2  意味着 15 x 2^-2, 或者 3.75 .
複製代碼

以12.1875爲例

let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
複製代碼
注意:
數值類型的字面量,能夠添加 0 或者 _ 來增長可讀性

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

複製代碼
  • 字符串字面量

字符串型字面量中不能包含未轉義的雙引號 (")、未轉義的反斜線(\)、回車符或換行符。

  • 布爾值字面量

布爾型字面量的默認類型是 Bool。布爾值字面量有三個值,它們是 Swift 的保留關鍵字:

true 表示真。
false 表示假。
nil 表示沒有值。
複製代碼

4、常量

一、命名規則:

  • let修飾
  • 字母、下劃線開頭
  • 區分大小寫,算2個變量
  • 可使用簡單的 Unicode 字符,如:漢子、表情
let a : Int = 10
let a = 10
let _a = 10
let view : UIView = UIView()
複製代碼

二、注意:

  • let修飾的,是不可變的
  • 咱們用let修飾的常量是一個類, 咱們能夠對其所在的屬性進行修改
  • 常量不能夠修改的意思是指針不能夠再指向其餘對象可是能夠經過指針拿到對象,修改其中的屬性

5、變量

一、 命名規則:

  • var修飾
  • 字母、下劃線開頭
  • 區分大小寫,算2個變量
  • 可使用簡單的 Unicode 字符,如:漢子、表情
var _a = "hello"
var b = "hello"
var B = "hello"
var 你好 = "hello"
複製代碼

二、 輸出:

print(_a)
print(b)
print(你好)
print(_a,b,你好)
print("見面要說\(_a)")
    
複製代碼

三、注意:

  • 咱們不會用var去引用一個類, 也沒有必要
  • 爲了更加安全,建議先定義常量,若是須要修改再修改成變量

6、特殊運算符

這裏只說一個不太常見的:

  • ===!==:測試一個實例的運行時類型和它的編譯時類型是否一致
if someInstance.dynamicType === someInstance.self {
    print("The dynamic and static type of someInstance are the same")
} else {
    print("The dynamic and static type of someInstance are different")
}
複製代碼
相關文章
相關標籤/搜索