Swift系列2-运算符

运算符专门用语

一元运算符,二元运算符,三元运算符

一元运算符:只对一个目标进行操作,如a,-a,!a等
二元运算符:对两个目标进行操作,如 2 + 3
三元运算符:对三个目标进行操作,Swift仅有一个三元运算符(a ? b : c),a是一个判断真假的语句,如果是真,返回a,假则返回b.(是if else 语句的缩写,后面会讲到)

赋值运算符,算数运算符,取余

赋值运算符: =

把右边的值赋值给左边的变量或者常量,当然左边的常量或者变量的数据类型要和右边的一致.

1
2
3
let gender = 1;print(gender)//把右边1赋值给左边的常量gender
let lable = UILabel.init();lable.backgroundColor = .white
let newLabel = lable;newLabel.text = "把一个UILabel赋值给一个新的UILabel常量"

算术运算符: + - * /

对基本数据类型进行算数运算:加,减,乘以,除以

1
2
3
4
let a = 1 + 2;print(a)//加 字符串,集合类,都可以使用 + 号进行操作
let b = 20 - 1;print(b)//减
let c = 5 * 23;print(c)//乘
let d = 5 / 2;print(d)//等于2,除以会获取到一个整数;

取余: %

对整型Int类型进行运算,结果取整型.

1
let e = 7 / 2;print(e)//等于1,取整数

一元减号运算符,一元加号运算符,组合赋值符号

一元减号运算符

正数变为负数,负数变为正数

1
var e1 = 10;e1 = -e1;print(e1)

一元加号运算符

不会对值产生影响

1
var e2 = 2;e2 = +e2;print(e2)

组合赋值符号

包含: += 和 -= ,本身加上或者减去

1
2
var g1 = 3;g1 += 10;print(g1)//g1 = g1 + 10
g1 -= 1;print(g1)//g1 = g1 - 1

比较运算符,三元条件运算符

比较运算符

比较结果返回true或者false 如a > b,a < b,a == b,a >= b,a <= b,a != b
元组也可以进行比较,每一个元素逐一比较(对应的元素必须是用一类型)
常用于控制流if

1
2
3
4
5
6
7
let f1 = 21
let f2 = arc4random() % 33 + 10;
if f1 > f2 {
print("f1 大于 f2")
}else{
print("f1 不大于 f2")
}

三元条件运算符

question?answer1:answer2,question为真,返回answer1,否则返回answer2

1
2
3
4
5
6
7
8
let maxNumber:Int = Int(f1 > f2 ? UInt32(f1) : f2)
print(maxNumber)
//其实就是如下写法
if f1 > f2 {
print("show f1 = \(f1)")
}else{
print("show f2 = \(f2)")
}

合并空值运算符(??),区间运算符

合并空值运算符(??)

a ?? b,a有值就返回a,a如果为nil,则返回b,a必须是可选类型,并且b和a一定是同一个类型

1
2
3
4
let count = 10111
var newCount:Int?//默认是nil
let get = newCount ?? count;print(get)
newCount = get

区间运算符

闭区间运算符

包含头尾

1
2
3
for i in 1...6 {
print("i = \(i)")//包含1和6
}

半开区间运算符

只有右边半开区间,没有左边半开区间

1
2
3
for i in 1..<6 {//注意是2个(.)加上<
print("i = \(i)")//不包含6
}

数组相关的区间运算符

单侧区间

1
2
3
4
let arr = ["a","b","c","d","e","f","g","h"]
for item in arr[2...] {
print("下标2之后的值,含有2:\(item)")
}

半开单侧区间

1
2
3
4
5
6
7
8
9
for item in arr[..<5] {
print("下标5之前的值,不含有5:\(item)")
}
//检测区间是否含有特定的值
let range = ...6
let r1 = range.contains(3)//true
let r2 = range.contains(-1)//true
let r3 = range.contains(7)//false
print(r1,r2,r3)

逻辑运算符

非(!a),与(a && b),或(a || b)
用来判断是真还是假

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let add = true,less = false
// 非!,把真变成假,把假变为真
if !add == false{

}
// 与&&,都是真才为真,有一个是假,就是假
if add && less {

}
// 或||,有一个为真就是真,2个都是假才是假
if add || less {

}
//有多个逻辑运算符,需要区分优先级时,可以使用()来确定优先执行的顺序;
if (add || less) || less && add {

}

end