常量和变量
常量,let关键字;变量,var关键字
常量和变量:把名字和特定类型的值关联起来;
常量:定义的时候赋值,一经设置不可被修改;
变量:可以先定义后赋值,或者定义的时候赋值,设置了之后可以再次修改,赋予新值;
1 | //例子示范 |
定义多个相同类型的常量或者变量,使用(,)隔开
1 | let a1:Int = 2,a2 = 3,a3 = 33;print(a1,a2,a3) |
类型标注,类型安全和类型推断
类型标注
类型标注:初始化的时候定义该常量或变量是什么类型的就赋值什么类型;
1 | let name:String = "mark";print(name) //定义了一个常量name,类型为String |
类型安全
Swift是一门类型安全的语言,类型安全的语言让你知道代码可以处理值的类型,如一段代码你期望获得String类型,就不能赋值Int类型.
类型安全在编译期就会报错,指出哪里的类型不符合对应的要求,可以帮助你在开发阶段更早的发现并修复错误;
1 | var age:Int = 12; |
类型推断
当你在初始化变量或者常量时,如果没有标注当前值的类型,Swift会帮你推断出当前变量或者常量的类型;
1 | let gender = 1;print(gender)//整型Int |
注释,分号
注释
编译器会忽略注释里面的语句
两条斜杠表示(//)单行注释
多行注释(/* */)
1 | //单行注释 |
分号(;)
Swift语句不要求每一段代码结束后都要分号,当然你写也不会有问题;但同一行多个语句一定要用分号隔开;
1 | let f1 = 19;print(f1)//这是两个语句,需要(;)隔开 |
整型,浮点型,布尔值,元组
整型
Int关键字,整型就是没有小数的数字,如12,-23;整型可以是有符号(正,零或者负),也可以是无符号的(正数,零);
1 | let i1:Int = 123,i2 = 0,i3 = -33;print(i1,i2,i3)//有符号的 |
浮点型
浮点型:Double,CGFloat,Float,有小数的数字;Double 64位机器,Float 32位机器,CGFloat 兼容64位和32位机器;
推荐使用CGFloat
1 | let c1:CGFloat = 2.22;print(c1)//浮点型 |
布尔值
布尔值:Bool关键字,true表示真,false表示假;不能使用1或者0来表示真假
1 | let t1:Bool = true;print("布尔值 = \(t1)") |
元组
元组:多个值合并成单一的复合型的值,元组内的值可以是任何类型的值,不需要是同一个类型;
使用括号()来表示元组.
1 | let y1 = ("age",30);print(y1.0,y1.1)//一个类型为(String,Int)的元组,通过下标来访问它的值,下标从0开始 |
数值类型转换,类型别名,可选项
数值类型转换
整型浮点型相互转换
1 | let o1 = 2;let o2 = CGFloat(o1);print(o1,o2)//整型转浮点型 |
类型别名
类型别名:typealias关键字,就是数据类型起另外一个自定义的名字,使用的时候,实际还是那个数据类型
1 | typealias FFINT = Int;let new:FFINT = 10;print(new)//FFINT还是Int类型,只是对Int赋予了一个FFINT的别名 |
可选项(?)
可选项(?):可以利用可选项来处理值缺失的情况.
必须是变量并且不赋值时等于nil.
可选意味着:这里有一个值,它等于x或者这里根本没有值它为nil;
nil:你可以将可选变量赋值为nil,表示为没有值;
注意:nil不能用于非可选常量或变量,如果你代码中的常量或变量表示某个条件下的值缺失,你应该给他声明为对应的可选项;
跟OC差别:
OC中的nil是一个指向不存在对象的指针,而Swift中nil不是指针,而是值缺失的一种特殊类型,任何类型的可选项都可以设置为nil,而不仅仅是对象类型;
1 | var str:String? = "game";str = nil;print(str as Any) |
!:强制展开
!:强制展开,”我知道可选项里面是有值的,展开把”;
注意:使用!来获取一个不存在的可选值会导致运行报错,使用!强展开时一定要确保可选项包含一个非nil的值;
1 | var myDay:String? |
可选项绑定
可选项绑定:如果Int(myDay!)返回一个可选的Int类型,那么把这个值赋予给一个新的常量newDay
1 | if let newDay = Int(myDay!) {//可以判断字符串是否可以转为整型 |
隐式展开可选项
1 | var canChoice:String!//隐式可选项 |
end