变量
类型推导:编译器在编译的时候,通过提供的初始化的值,自动推导出特定的表达式的值
var myVariable = 42 //编译器自动推导其类型为Int
myVariable = 50 //变量多次赋值的时候需要保证值的类型是相同的
print(myVariable)
- 变量多次赋值的时候需要保证值的类型是相同的
常量
- 只能赋值一次(常量不能被二次修改)
- 它的值不要求在编译时期确定,但使用之前必须赋值一次
显示声明类型,语法:“变量:类型”
let num1 = 10
let num2: Int
num2 = 20
func getNum() -> Int{
return 30
}
let num3 = getNum()
下面代码是错误的(给不明确类型赋值会报错
)
- 常量、变量在初始化前,都不能使用(Swift 不会自动给变量赋初始值,也就是说变量不会有默认值,所以使用前必须初始化)
标识符
- 标识符(比如常量名、变量名、函数名)几乎可以使用任何字符
- 标识符不能以数字开头,不能包含空白字符、制表符、横线、箭头等特殊字符
func 🆚 (){
print("v587")
}
🆚()
let 🐂 = "牛"
var 🐷 = "猪头"
常见数据类型
Swift 中是没有基本数据类型概念的,只有值类型与引用类型。
常见数据类型 | ||
值类型(value type) | 枚举(enum) | Optional |
结构体(struct) | Bool、Int、Float、Double、Character | |
String、Array、Dictionary、Set | ||
引用类型(reference type) | 类(class) |
整数类型: Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64
在32bit平台,Int等价于Int32;在64bit平台,Int等价于Int64
整数的最值:UInt8.max、Int16.min
一般情况下,都是直接使用Int即可
浮点类型:Float,32位,精度只有6位;Double,64位,精度至少15位
字面量
- 布尔
//布尔
let bool1 = true //取反是false
let bool2 = false
- 字符串
//字符串
let string = "CSDN"
- 字符(必须声明是Character类型,默认是字符串)
//字符(可存储ASCII字符、Unicode字符)
let character :Character = "🦆"
- 整数
//整数
let intDecimal = 16 // 十进制
let intBinary = 0b10000 // 二进制
let intOctal = 0o20 // 八进制
let intHexadecimal = 0x10 // 十六进制
- 浮点数
//浮点数
let doubleDecimal = 314.15 // 十进制,等价于 3.1415e2
let doubleDecimal1 = 3.1415e2
let doubleHexadecimal1 = 0xFp2 // 十六进制,意味着15x2^2,相当于十进制的 60.0
let doubleHexadecimal2 = 0xFp-2 // 十六进制,意味着15x2^-2,相当于十进制的3.75
//以下都是表示 3.1875
//十进制:3.1875、0.31875e1
//十六进制:0x3.3p0
整数和浮点数可以添加额外的零或者添加下划线来增强可读性
100_0000、1_000_000.000_0001、000789.245
- 数组
let array = [1,2,3,4,5,6,8,9]
- 字典
let dictionary = ["width" : 30, "height" : 40, "depth": 50]
类型转换
- 整数转换
//整数转换
let int1: UInt16 = 1_000
let int2: UInt8 = 2
let int3 = int1 + UInt16(int2)
- 整数、浮点数转换
//整数、浮点数转换
let int = 4
let double = 3.14159
let num = Double(int) + double
let intNum = Int(num)
字面量可以直接相加,因为数字字面量本身没有明确的类型
let rs = 3 + 1.14159
元组(Tuple)
let http404Error = (404, "Not Found")
print("The status code is \(http404Error.0)")
let (statusCode, StatusMsg) = http404Error
print("The status code is \(statusCode)")
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
let http200Status = (statusCode:200,des:"OK")
print("The status code is \(http200Status.statusCode)")