数据类型与变量
声明变量时可指定它的数据类型。
Int:整数类型
UInt:无符号整型,一般不推荐
浮点数:浮点类型比整数类型表示的范围更大,可以存储比Int类型更大或者更小的数字
Double:表示 64 位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型
Fload:表示 32 位浮点数。精度要求不高的话可以使用此类型
TIP
Double
精确度很高,至少有 15 位数字,而 Float 最少只有 6 位数字。选择哪个类型取决于你的代码需要处理的值的范围
- Bool
布尔常量:true
和 false
- String
"imondo.cn"
- Character
字符指单个字母
"C"
- Optional
可选类型来处理值可能缺失的情况。可选类型表示有值或没有值。
定义后缀 ?
作为命名类型 Optional
的简写,这两种写法是相等的:
var num: Int?
var num1: Optional<Int>
TIP
注意,在类型和 ?
之间没有空格
Optional
是一个含有两种情况的枚举,None
和 Some(T)
,用来表示可能有或可能没有值。
任何类型都可以明确声明为(或者隐式转换)可选类型。当声明一个可选类型的时候,要确保用括号给 ?
操作符一个合适的范围。例如,声明可选整数数组,应该写成 (Int[])?
写成 Int[]?
会报错。
当你声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil
。
如果一个可选类型的实例包含一个值,你可以用后缀操作符 !
来访问这个值:
num = 32
num! // 32
请注意:如果使用 !
访问值为 nil
时,会有运行时错误。
如果值为nil,任何操作都不会执行,也不会有运行报错。
import Cocoa
var str:String? = nil
if str != nil {
print(str)
}else{
print("字符串为 nil")
}
执行结果
字符串为 nil
- 强制解析:加
!
强制解析
import Cocoa
var str:String?
str = "Hello, Swift!"
if str != nil {
// 强制解析
print( str! )
}else{
print("str 值为 nil")
}
- 自动解析
import Cocoa
var str:String! // 自动解析
str = "Hello, Swift!"
if str != nil {
print(str)
}else{
print("str 值为 nil")
}
- 可选绑定:可选绑定可以用在
if
和while
语句中来对可选类型的值进行判断并把值赋给一个常量或者变量
import Cocoa
var str:String?
str = "Hello, Swift!"
if let str1 = str {
print("你的字符串值为 - \(str1)")
}else{
print("你的字符串没有值")
}
数值范围
类型 | 大小(字节) | 区间值 |
---|---|---|
Int8 | 1 字节 | -128 到 127 |
UInt8 | 1 字节 | 0 到 255 |
Int32 | 4 字节 | -2147483648 到 2147483647 |
UInt3 | 24 字节 | 0 到 4294967295 |
Int64 | 8 字节 | -9223372036854775808 到 9223372036854775807 |
UInt6 | 48 字节 | 0 到 18446744073709551615 |
Float | 4 字节 | 1.2E-38 到 3.4E+38 (~6 digits) |
Double | 8 字节 | 2.3E-308 到 1.7E+308 (~15 digits) |
类型别名
类型别名对当前的类型定义了另一个名字,类型别名通过使用 typealias
关键字来定义。
语法格式如下:
typealias newname = type
例如以下定义了 Int 的类型别名为 Feet:
typealias Feet = Int
现在我们可以通过别名来定义变量
import Cocoa
typealias Feet = Int
var num: Feet = 100
print(num)
输出结果仍是:
100
类型安全
Swift 是一个类型安全的语言。由于是类型安全的,所以在编译时会要进行类型检查,并把不匹配的类型标记为错误。
import Cocoa
var varA = 200
varA = "imondo.cn"
print(varA)
编译时,会报错。
类型推断
当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你每次声明常量和变量的时候都需要显式指定类型
如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。
let num = 32
// 会推测为 Int
let PI = 3.14159
// 会被推测为 Double 类型
TIP
当推断浮点数的类型时,Swift
总是会选择 Double
而不是 Float
变量
变量声明
// 存储型变量或存储型变量属性
var str = "imondo.cn"
// 常量
let num = 10
变量名可以由字母,数字和下划线组成。
变量名需要以字母或下划线开始。
Swift 是一个区分大小写的语言,所以字母大写与小写是不一样的。
变量和常量可以使用 print
函数来输出。在字符串中可以使用括号与反斜线来插入变量
如:
import Cocoa
var name = "Mondo"
var site = "https://imondo.cn"
print("\(name)的首页为:\(site)")
执行结果:
Mondo的首页为 https://imondo.cn
字面量
字面量,就是指像特定的数字,字符串或者布尔值,能够直接了当地指出自己的类型并为变量进行赋值的值。
整型
浮点型
字符串型
布尔型
true
表示真false
表示假nil
表示没有值