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 = 1var value2 = 2if 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 != value2value1 < value2value1 <= value2name1 == name2a1 == a2
上述例子中,第①行是比较两个字符串内容是否相等,注意字符串String类型不能使用===进行比较,因为String不是引用类型。第②行代码是比较两个数组内容是否相等,我们会发现结果是相等的。第③行代码是比较两个数组是否相等(即是否是同一个实例),我们会发现结果是不相等的。
提示
===和!==一般不用于引用类型之外的其他类型的比较。由于Swift中引用类型只有类,所以===和!==一般只比较类的实例,而结构体不是引用类型,一般不能比较,但是Array(数组)结构体是例外的一个,它虽然是结构体,但它可以使用===和!==进行比较。所以上述代码第③行并不会有编译错误,如果我们将第②行代码改为===进行比较,则会发生编译错误。
