kotlin运算符与表达式
- 和java相同的运算符
1.1单目前缀运算符
有+、-、!这三个。
+a = a.unaryPlus()
-a = a.unaryMinus()
!a = a.not()
1.2自加自减运算符
运算符 对应方法
a++ a.inc()
a-- a.dec()
注:++不完全与对应方法想等,因为a++ 与++a的含义不同
1.3双目运算符
运算符 对应方法
a+b a.plus(b)
a-b a.minus(b)
a*b a.times(b)
a/b a.div(b)
a%b a.rem(b)
a…b a.rangeTo(b)
1.4 in和!in
a in b b中是否包含a
运算符 对应方法
a in b b.contains(a)
a !in b !b.minus(a
1.5 索引访问符 []
运算符 对应方法
a[i] a.get(i)
a[i,j] a.get(i,j)
a[i_1, … ., i_n] a.get(i_l, … ., i_n)
a[i]=b a.set(i,b)
a[i,j]=b a.set(i,j,b)
a[i_1, … ., i_n]=b a.set(i_1, … ., i-n,b)
1.6调用运算符
运算符 对应方法
a() a.invoke()
a(b) a.invoke(b)
a(b1, b2) a.invoke(b1, b2)
a(b1, b2, b3, … ) a.invoke(b1, b2, b3, … )
1.7相等与不等运算符
==与equals相同
- 位运算符
操作符 含义 用法
and(bits) 按位与 1 and 2
or(bits) 按位或 1 or 2
inv(bits) 按位非 1.inv()
xor(bits) 按位异或 1 xor 2
shl(bits) 按位左移 1.shl(2)
shr(bits) 按位右移 1.shr(2);
ushr(bits) 无符号按位右移 1.ushr(2);
(1)异或
两位相同时返回1 否则返回0
(2)左移1位
右边空余的0补齐 相当于乘2
(3)右移1位
正数右移
如果是正数左边用0补齐 相当于除2 (向下取整)
/
6>>1=3 6/2=3
5>>1=2 5/2=2
4>>1=2 4/2=2
3>>1=1 3/2=1
2>>1=1 -2/2=1
1>>1=0 1/2=0
负数的右移
/
-6>>1=-3 -6/2=-3
-5>>1=-3 -5/2=-2
-4>>1=-2 -4/2=-2
-3>>1=-2 -3/2=-1
-2>>1=-1 -2/2=-1
-1>>1=-1 -1/2=0
如果是负数左边用1补齐
当是偶数时与除2想等
如果是奇数 除以2相当于向0取整 右移1位相当于向负无穷取整
(4)无符号右移
不管正负数,左边都用0补齐
3 区间运算符
3.1闭区间运算符
a…b代表从a到b到闭区间 相当于数学中的 [a,b] ,可以配合in操作符实现 for循环的遍历
for(num in 2..6){
println(num)
}
3.2左闭右开区间
a until b 代表从a到b的左闭右开区间,相当于数学中的[a,b)(包含a,不包含b)
3.3反向区间
a downto b 可以表示从大到小的闭区间
3.4区间步长
默认的步长都等于1,可以通过step设置步长 这样每次都是以2的步长进行遍历
for(num in 2..6 step 2){
println(num)
}
4运算重载符
所有的运算符都是依靠特定名称的方法支撑,并使用operator符号修饰。