比较运算符 #
一、基本比较运算符 #
1.1 比较运算符列表 #
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 等于 | a == b |
| != | 不等于 | a != b |
| > | 大于 | a > b |
| < | 小于 | a < b |
| >= | 大于等于 | a >= b |
| <= | 小于等于 | a <= b |
1.2 基本用法 #
swift
let a = 10
let b = 20
print(a == b)
print(a != b)
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
1.3 比较结果 #
比较运算符返回 Bool 类型的值:
swift
let result1 = 5 > 3
let result2 = 5 < 3
let result3 = 5 == 5
let result4 = 5 != 3
print(result1)
print(result2)
print(result3)
print(result4)
二、字符串比较 #
2.1 相等性比较 #
swift
let str1 = "Hello"
let str2 = "Hello"
let str3 = "World"
print(str1 == str2)
print(str1 == str3)
print(str1 != str3)
2.2 大小比较 #
swift
print("apple" < "banana")
print("Apple" < "apple")
print("abc" < "abcd")
2.3 前缀和后缀比较 #
swift
let filename = "document.pdf"
print(filename.hasPrefix("doc"))
print(filename.hasSuffix(".pdf"))
print(filename.contains("ment"))
三、浮点数比较 #
3.1 精度问题 #
swift
let a = 0.1 + 0.2
let b = 0.3
print(a)
print(b)
print(a == b)
3.2 近似比较 #
swift
func approximatelyEqual(_ a: Double, _ b: Double, tolerance: Double = 0.0001) -> Bool {
return abs(a - b) < tolerance
}
let a = 0.1 + 0.2
let b = 0.3
print(approximatelyEqual(a, b))
3.3 特殊值比较 #
swift
let nan = Double.nan
let infinity = Double.infinity
print(nan == nan)
print(nan != nan)
print(infinity == Double.infinity)
print(infinity > 1_000_000)
四、恒等运算符 #
4.1 引用类型比较 #
对于类实例,== 比较的是值,=== 比较的是引用:
swift
class Person {
var name: String
init(name: String) {
self.name = name
}
}
let person1 = Person(name: "张三")
let person2 = Person(name: "张三")
let person3 = person1
print(person1 === person2)
print(person1 === person3)
print(person1 !== person2)
4.2 恒等运算符表 #
| 运算符 | 描述 |
|---|---|
| === | 恒等(同一引用) |
| !== | 不恒等(不同引用) |
4.3 值类型比较 #
swift
struct Point {
var x: Int
var y: Int
}
let point1 = Point(x: 1, y: 2)
let point2 = Point(x: 1, y: 2)
print(point1 == point2)
五、可选值比较 #
5.1 基本比较 #
swift
let a: Int? = 5
let b: Int? = 5
let c: Int? = nil
print(a == b)
print(a == c)
print(a != c)
5.2 可选值与值比较 #
swift
let optional: Int? = 5
let value = 5
print(optional == value)
print(optional != 6)
5.3 nil比较 #
swift
let value: Int? = nil
print(value == nil)
print(value != nil)
if value == nil {
print("值为空")
}
六、元组比较 #
6.1 相等性比较 #
swift
let tuple1 = (1, 2)
let tuple2 = (1, 2)
let tuple3 = (1, 3)
print(tuple1 == tuple2)
print(tuple1 == tuple3)
6.2 比较限制 #
swift
let tuple1 = (1, "Hello")
let tuple2 = (1, "World")
print(tuple1 == tuple2)
6.3 多元素比较 #
swift
let a = (1, 2, 3)
let b = (1, 2, 4)
print(a < b)
七、自定义比较 #
7.1 实现Equatable协议 #
swift
struct Person: Equatable {
var name: String
var age: Int
}
let person1 = Person(name: "张三", age: 25)
let person2 = Person(name: "张三", age: 25)
let person3 = Person(name: "李四", age: 30)
print(person1 == person2)
print(person1 == person3)
7.2 自定义比较逻辑 #
swift
struct Person: Equatable {
var name: String
var age: Int
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name
}
}
let person1 = Person(name: "张三", age: 25)
let person2 = Person(name: "张三", age: 30)
print(person1 == person2)
7.3 实现Comparable协议 #
swift
struct Person: Comparable {
var name: String
var age: Int
static func < (lhs: Person, rhs: Person) -> Bool {
return lhs.age < rhs.age
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.age == rhs.age
}
}
let person1 = Person(name: "张三", age: 25)
let person2 = Person(name: "李四", age: 30)
print(person1 < person2)
print(person1 > person2)
八、条件中的应用 #
8.1 if语句 #
swift
let score = 85
if score >= 90 {
print("优秀")
} else if score >= 60 {
print("及格")
} else {
print("不及格")
}
8.2 while循环 #
swift
var count = 0
while count < 5 {
print(count)
count += 1
}
8.3 三元运算符 #
swift
let score = 75
let result = score >= 60 ? "及格" : "不及格"
print(result)
九、实际应用 #
9.1 验证输入 #
swift
func validatePassword(_ password: String) -> Bool {
return password.count >= 8
}
print(validatePassword("123456"))
print(validatePassword("12345678"))
9.2 范围检查 #
swift
func isInRange(_ value: Int, min: Int, max: Int) -> Bool {
return value >= min && value <= max
}
print(isInRange(5, min: 1, max: 10))
print(isInRange(15, min: 1, max: 10))
9.3 排序 #
swift
let numbers = [3, 1, 4, 1, 5, 9, 2, 6]
let sorted = numbers.sorted { $0 < $1 }
print(sorted)
十、总结 #
本章学习了Swift的比较运算符:
- 基本比较:==、!=、>、<、>=、<=
- 恒等运算符:===、!==
- 字符串比较:相等性和大小比较
- 可选值比较:nil和值的比较
最佳实践:
- 注意浮点数精度问题
- 区分值比较和引用比较
- 实现Equatable协议支持自定义比较
- 使用Comparable支持排序
下一章,我们将学习逻辑运算符!
最后更新:2026-03-26