整型
无符号整型:进入源码,可以发现这些类型都是以结构体来实现的
var UintMax = UInt.max//64位操作系统下为64位,32位操作系统下为32位
var Uint8Max = UInt8.max
var Uint16Max = UInt16.max
var Uint32Max = UInt32.max
var Uint64Max = UInt64.max
print(UintMax,Uint8Max,Uint16Max,Uint32Max,Uint64Max)
//18446744073709551615 255 65535 4294967295 18446744073709551615
var size = MemoryLayout<UInt8>.size;// 类型所占字节数
有符号整型
var maxInt8 = Int8.max //127
var mimInt8 = Int8.min //-128
var maxInt16 = Int16.max //32767
var minInt16 = Int16.min //-32768
var maxInt32 = Int32.max //2147483647
var minInt32 = Int32.min //-2147483648
var maxInt64 = Int64.max //9223372036854775807
var minInt64 = Int64.min //-9223372036854775808
var intSize = sizeof(Int) //8位
浮点类型
// 浮点类型,支持科学计数法
var sum = 1.25e3 //1.25*(10^3) = 1250
var sun2 = 0x1p3 //1*(2^3) = 8 // 16进制
// 浮点类型支持下划线填充增加可读性
var num1 = 001.23 //1.23
var num2 = 1_000 //1000
var num3 = 1_000.1_001 //1000.1001
布尔类型bool
Swift语言的Bool类型十分严格,只有true和false两种值,分别表示真和假。同样,在Swift语言的条件语句以及需要进行逻辑判断的语句中,所使用的条件表达式的值也必须为Bool类型。
var bool1 = true //创建布尔真变量
var bool2 = false //创建布尔假变量
元组类型:可以创建出任意数据类型组合的自定义数据类型
// 元组
// 指定参数名的结构 变量名:(属性1:1数据类型,属性2:2数据类型)
var person:(name:String,age:Int) = ("李晓华",19)// 初始化
person.name = "黎明"// 赋值
person.age = 32
var name = person.name //name = 黎明 // 取值
// 不指定参数名的元组结构
var car:(String,Int) = ("奔驰",200000) // 初始化
car.0 = "红旗"// 赋值
var carName = car.0 // 取值
var carPrice = car.1
//元组的分解
//var (theCar,thePrice) = car //一一对应
var (theCar,_) = car // 对不需要的参数进行匿名 _又为匿名标识符
//提示:元组适用于简单的数据类型,复杂的类型建议还是适用结构体或者类来实现
可选值类型:对数值为空进行了严密的把控
Swift语言是一种十分强调类型安全的语言, 在Swift语言中普通的类型是不允许为nil的,当然也就不可以与nil进行比较运算,这种机制极大地减小了代码的不可控性,如果一个变量在逻辑上可能为nil,则开发者需要将其包装为Optional类型
var obj:String? // 声明普通类型变量后不进行初始化就可能使用的时候,需要对变量进行Optional包装,否则会报错
if obj == nil {
}
Optional类型的正确使用步骤包含了判断、拆包、绑定拆包后的值到临时常量3个过程
var obj:String? = "HS"
if obj != nil {
obj!
}
也可以使用if let语句对这个过程进行简化
var obj:String? // Optional类型
var name:String // String类型
if let temp = obj { // 临时变量temp
name = temp // temp为解包后的值
}else {
obj = "123";
name = obj!// Optional类型需要解包才能赋值给基本类型
}
print(name)
也可以使用if let同时对多个可选值解包并附加其他判断条件
var big:Int? = 2;
var small:Int? = 1;
if let temp1 = big,let temp2 = small,temp1 > temp2 {
print(temp1,temp2);
}else {
big = 2;
small = 1;
}
为类别去别名
typealias P = Int
网友评论