4.2 关系运算符

关系运算是比较两个表达式大小关系的运算,它的结果是truefalse,即布尔型数据。如果表达式成立则结果为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 整型,浮点型,字符型串
=== 恒等于 ab同引用同一个实例时返回true,否则false=====的含义不同。==是比较两个引用的内容是否是同一个实例 a===b 主要用于引用数据比较
!== 不恒等于 ===恰恰相反 a!==b 主要用于引用数据比较

下面我们来看一个关系运算符的示例:

  1. var value1 = 1
  2. var value2 = 2
  3. if value1 == value2 {
  4. println("value1 == value2")
  5. }
  6. if value1 != value2 {
  7. println("value1 != value2")
  8. }
  9. if value1 > value2 {
  10. println("value1 > value2")
  11. }
  12. if value1 < value2 {
  13. println("value1 < value2")
  14. }
  15. if value1 <= value2 {
  16. println("value1 <= value2")
  17. }
  18. let name1 = "world"
  19. let name2 = "world"
  20. if name1 == name2 {
  21. println("name1 == name2")
  22. }
  23. let a1 = [1,2] //数组类型常量
  24. let a2 = [1,2] //数组类型常量
  25. if a1 == a2 {
  26. println("a1 == a2")
  27. }
  28. if a1 === a2 {
  29. println("a1 === a2")
  30. }

输出结果如下:

  1. value1 != value2
  2. value1 < value2
  3. value1 <= value2
  4. name1 == name2
  5. a1 == a2

上述例子中,第①行是比较两个字符串内容是否相等,注意字符串String类型不能使用===进行比较,因为String不是引用类型。第②行代码是比较两个数组内容是否相等,我们会发现结果是相等的。第③行代码是比较两个数组是否相等(即是否是同一个实例),我们会发现结果是不相等的。

提示 ===!==一般不用于引用类型之外的其他类型的比较。由于Swift中引用类型只有类,所以===!==一般只比较类的实例,而结构体不是引用类型,一般不能比较,但是Array(数组)结构体是例外的一个,它虽然是结构体,但它可以使用===!==进行比较。所以上述代码第③行并不会有编译错误,如果我们将第②行代码改为===进行比较,则会发生编译错误。