var 定義變量,設(shè)置之后可以修改
let 定義常量,設(shè)置之后不可以修改
語句末尾不用使用 ;
在 Swift 中使用 print()替代 OC 中的 NSLog,print 的性能更好
C: printf("Hello, World!");
OC:NSLog(@"Hello, World!");
Swift1.2:println("Hello, World!")
Swift2.0:print("Hello, World!")
變量:
OC:
先定義再初始化
int num;
num = 10;
定義的同時初始化
int num2 = 20;
Swift:
先定義再初始化
var num
報(bào)錯: 沒有指定數(shù)據(jù)類型(type annotation missing in pattern), 在Swift中如果想要先定義一個變量, 以后使用時再初始化必須在定義時告訴編譯器變量的類型(類型標(biāo)注)
var num: Int
num = 10
定義的同時初始化
在Swift中如果定義的同時初始化一個變量,可以不用寫數(shù)據(jù)類型, 編譯器會根據(jù)初始化的值自動推斷出變量的類型(其它語言是沒有類型推斷的)
以后在開發(fā)中如果在定義的同時初始化就沒有必要指定數(shù)據(jù)類型, 除非需要明確數(shù)據(jù)類型的長度或者定義時不初始化才需要指定數(shù)據(jù)類型
var num2: Int = 20
var num3 = 20
你可以用任何你喜歡的字符作為常量和變量名,包括 Unicode 字符
常量與變量名不能包含數(shù)學(xué)符號,箭頭,保留的(或者非法的)Unicode 碼位,連線與制表符。
也不能以數(shù)字開頭,但是可以在常量與變量名的其他地方包含數(shù)字。
錯誤:
var 3x = 10
var x+-3 = 10
正確:
var ?? = 100
var 哈哈 = 300
常量:
OC: const int num = 10;
Swift: let num = 10
錯誤:
let num : Int
Swift中的常量必須在定義時初始化(OC可以不初始化), 否則會報(bào)錯
常量的用途: 某些值以后不需要改變, 例如身份證
let num4 = 10
基本數(shù)據(jù)類型
OC:
整型 int intValue = 10;
浮點(diǎn)型 double doubleValue = 10.10; float floatValue = 5.1;
長 long
短 short
有符號 signed
無符號 unsigned
各種類型的數(shù)據(jù)的取值范圍在不同位的編譯器下取值范圍不同
Swift:注意關(guān)鍵字大寫
//整型
var intValue:Int = 10
//浮點(diǎn)型
var intValue1:Double = 10.10 // 表示64位浮點(diǎn)數(shù)
var intValue2:Float = 9.9 // 表示32位浮點(diǎn)數(shù)
//如果按照長度劃分,Swift中的長短比OC更加精確
var intValue3:Int8 = 6
var intValue4:Int16 = 7
var intValue5:Int32 = 8
var intValue6:Int64 = 9
有符號無符號, 默認(rèn)是有符號的(UInt8/UInt16/UInt32/UInt64)
var uintValue7:UInt = 10
注意: 無符號的數(shù)比有符號的取值范圍更大, 因?yàn)榉栁灰灿脕泶嬷?
Swift是類型安全的語言, 如果取值錯誤會直接報(bào)錯, 而OC不會(OC支持隱式類型轉(zhuǎn)換);Swift不允許隱式類型轉(zhuǎn)換, 但可以使用顯示類型轉(zhuǎn)換(強(qiáng)制類型轉(zhuǎn)換)
取值不對
OC:unsigned int intValue = -10; 不會報(bào)錯
Swift:var intValue:UInt = -10 會報(bào)錯
溢出:
OC:int intValue = INT_MAX + 1; 不會報(bào)錯
Swift:var intValue:UInt = UInt.max + 1 會報(bào)錯
數(shù)據(jù)類型的相互賦值(隱式類型轉(zhuǎn)換)
OC可以
int intValue = 10;
double doubleValue = intValue;
double doubleValue = (double)intValue;
Swift:不可以
var intValue:Int = 10
var doubleValue:Double
// error : Cannot convert value of type 'Int' to specified type 'Double'
doubleValue = intValue
doubleValue = Double(intValue) // correct
在Swift中“值永遠(yuǎn)不會被隱式轉(zhuǎn)換為其他類型”(OC中可以隱式類型轉(zhuǎn)換), 以上語句會報(bào)錯
// 注意:Double()并不會修改intValue的值, 而是通過intValue的值生成一個臨時的值賦值給doubleValue
print(intValue)
print(doubleValue)