4.2 关系运算符
关系运算是比较两个表达式大小关系的运算,它的结果是true
或false
,即布尔型数据。如果表达式成立则结果为true
,否则为false
。关系运算符有8种:==
、!=
、>
、<
、>=
、<=
、===
和!==
,具体说明参见表4-4。
表4-4 关系运算符
运算符 | 名称 | 说明 | 例子 | 可应用的类型 |
---|---|---|---|---|
==
| 等于 |
a 等于b 时返回true ,否则false 。== 与= 的含义不同
|
a==b
| 整型,浮点型,字符型串,布尔型等值类型比较 |
!=
| 不等于 |
与== 恰恰相反
|
a!=b
| 整型,浮点型,字符型串,布尔型等值类型比较 |
>
| 大于 |
a 大于b 时返回true ,否则false
|
a>b
| 整型,浮点型,字符型串 |
<
| 小于 |
a 小于b 时返回true ,否则false
|
a
| 整型,浮点型,字符型串 |
>=
| 大于等于 |
a 大于等于b 时返回true ,否则false
|
a>=b
| 整型,浮点型,字符型串 |
<=
| 小于等于 |
a 小于等于b 时返回true ,否则false
|
a<=b
| 整型,浮点型,字符型串 |
===
| 恒等于 |
a 与b 同引用同一个实例时返回true ,否则false 。=== 与== 的含义不同。== 是比较两个引用的内容是否是同一个实例
|
a===b
| 主要用于引用数据比较 |
!==
| 不恒等于 |
与=== 恰恰相反
|
a!==b
| 主要用于引用数据比较 |
下面我们来看一个关系运算符的示例:
var value1 = 1
var value2 = 2
if value1 == value2 {
println("value1 == value2")
}
if value1 != value2 {
println("value1 != value2")
}
if value1 > value2 {
println("value1 > value2")
}
if value1 < value2 {
println("value1 < value2")
}
if value1 <= value2 {
println("value1 <= value2")
}
let name1 = "world"
let name2 = "world"
if name1 == name2 { ①
println("name1 == name2")
}
let a1 = [1,2] //数组类型常量
let a2 = [1,2] //数组类型常量
if a1 == a2 { ②
println("a1 == a2")
}
if a1 === a2 { ③
println("a1 === a2")
}
输出结果如下:
value1 != value2
value1 < value2
value1 <= value2
name1 == name2
a1 == a2
上述例子中,第①行是比较两个字符串内容是否相等,注意字符串String
类型不能使用===
进行比较,因为String
不是引用类型。第②行代码是比较两个数组内容是否相等,我们会发现结果是相等的。第③行代码是比较两个数组是否相等(即是否是同一个实例),我们会发现结果是不相等的。
提示
===
和!==
一般不用于引用类型之外的其他类型的比较。由于Swift中引用类型只有类,所以===
和!==
一般只比较类的实例,而结构体不是引用类型,一般不能比较,但是Array
(数组)结构体是例外的一个,它虽然是结构体,但它可以使用===
和!==
进行比较。所以上述代码第③行并不会有编译错误,如果我们将第②行代码改为===
进行比较,则会发生编译错误。