一、声明和类型推导
Swift一般的声明格式如下:
let(常量)/var(变量) 名称:类型=取值
例如
let a:Int=60
var x:Float=80.0
此时a为常量,在声明的时候被初始化,该值不能被更改
此时b为变量,在声明的时候被赋值,b可以被重新赋值成类型相符的值
Swift具有类型检查和类型推导的机能,使得定义常量和变量变得更加简单安全
例如
let b=50
var real=57.3
var char=“S”
var sentence=“String”
Swift会根据变量被初始化值的类型来判断变量的类型,b被指定为整型,real被指定为Double型,char为字符串型,sentence为字符串型
★注意:因为苹果的设备和操作系统进入了64位时代,因此浮点数的默认类型为Double型,而由于Swift中的字符和字符串都使用双引号(这与很多其它的编程语言不同),在不指定格式的情况下,默认的类型为字符串类型。如果想使用Float类型或者字符型(Character型被认为是一种特殊的String类型),就需要使用标准的格式声明。
★常量类型存在的意义:常量的设计并不是多此一举,因为Swift的编译器底层会优化储存,因此常量占据的内存空间会比变量小许多,原则上能用常量的数值就用常量。
★注意:常量在声明的时候一定要初始化,原则上变量也是。
二、常见的类型
逻辑:
Bool:取值为true或者false
有符号整数:
较大的数字:Int、Int32、Int64:32位或者64位的值
较小的数字:Int8、Int16:8位或者16位的数字
非负整数:
较大的数字:UInt、UInt32、UInt64:32位或者64位的值
较小的数字:UInt8、UInt16:8位或者16位的数字
小数:
Float、Double:32位或者64位的小数
字符:
Character、String:单个字符或者字符串,使用双引号括起来表示其值
三、查看数值类型的上下限
由于数值类型具有上限和下限,因此Swift提供开发者随时查阅上限和下限的方法,以便及时排除数据溢出的错误
上限:
类型名.max
下限:
类型名.min
例如:
println(Int.max)
println(UInt.min)
四、类型转换
一般情况下,类型转换只能在相近的类型发生,且转换的方向是单向的
Int→Float→Double→String
Character→String
转换的格式:
目标的类型名(需要转换的变量)
如果希望逆向转换,通常需要使用某些类型中特定的方法
例如
let s=”123“
var stringToInt=s.toInt()
因为在逆向转换时,经常需要检查被转换的值对于目标的类型而言是不是例外的值,需要做更多的复杂的检查,因此通常要使用各个类型的特殊方法进行。 并且,转换成功之后的值一般都是可选类型。
五、字符串的拼接和比较
Swift的字符串增加了新特性
使用加号可以把多个字符串的常量或者变量拼接在一起
let hello=”Hello“
var world=”World“
var sentence=hello+” “+world+”!!!!“
此时sentence的值为Hello World!!!!
★:Character类型也可以用于拼接,但是要先转换成String类型
与C语言要使用strcat(),Objective-C要使用Foundation类NSString的方法stringWithFormat不同,Swift使用加号就可以完成拼接,使代码更加简洁
使用数值类型的比较符号可以直接比较字符串,Swift从左至右逐个比较字符串的ASCII值来判断字符串的大小
与C语言要使用strcmp(),Objective-C要使用Foundation类NSString的方法compare不同,Swift的字符串比较代码简单易懂
六、数学运算符
Swift的数学运算符具有新特性
加号和减号:除了可以用于计算,还可以用作单目运算符表示正负
取余运算:可以用于Int类型 和Double类型
七、特殊的数值表示
Int:
二进制:0b开头的0和1组成的数字
八进制:0o开头的0~7组成的数字
十六进制:0x开头的数字
具有分隔符的大型数字:数值可以用下划线进行分隔,Swift在处理数值时会忽略下划线
例如:
let fiveMillion=5_000_000
Double:
科学计数法:有效数字e指数部分
e表示以10为底的指数
例如:
-10
4.434×10
表示为:
4.434e-10
八、数值类型的比较
Swift支持多种数值类型的比较,Swift根据各个数值的字面的值进行比较,与数学意义的比较一致
九、值的显示
Swift使用嵌入表示法\(常量名或变量名)来表示值。Swift的print和println方法支持这样的表示,同时也支持使用嵌入表示法拼接的字符串的赋值, 无需printf和NSLog中的格式指定和指定变量输出的顺序
例如
let subject=”It“
let verb=”is“
let sentence= "\(subject) \(verb) a sentence."
此时sentence的值为It is a sentence.
十、类型别名
Swift允许给常用的类型起别名,以提高代码的可读性
格式:
typealias 类型的别名 = 原来的类型
★注意:为增强代码的可读性,为类型起别名后一定要准备相应的文档说明,并与相关的开发人员共享文档