Kotlin - 运算符

【一元运算符】

运算符 名称 举例 结果
++

自增

翻译为 a.inc()

a = 2

b = ++a        //a先自增,再把值赋给b

a = 3

b = 3

a = 2

b = a ++        //把a赋值给b,a再自增

a = 3

b = 2

- -

自减

翻译为 a.dec()

a = 2

b = - - a

a = 1

b = 1

a = 2

b = a - -

a = 1

b = 2

【二元运算符】

运算符 名称 举例 结果
+

加法

翻译为 a.plus(b)

5 + 5 10
-

减法

翻译为 a.minus(b)

5 - 5 0
*

乘法

翻译为 a.times(b)

5 * 5 25
/

除法

翻译为 a.div(b)

5 / 5 1
%

取模

翻译为 a.rem(b)

a % b        //负数看a,不管b

a < b,a

a = b,0

a > b,余数

b = 1,1

..

获取区间

翻译为 a.rangeTo(b)

1..5 1,2,3,4,5

【算数运算符】

运算符 名称 举例 结果
+=

加等于

翻译为 a.plusAssign(b)

a = 4

a += 2

a = 6
-=

减等于

翻译为 a.minusAssign(b)

a = 4

a -= 2

a = 2
*=

乘等于

翻译为 a.timesAssign(b)

a = 4

a *= 2

a = 8
/=

除等于

翻译为 a.divAssign(b)

a = 4

a /= 2

a = 2
%=

模等于

翻译为 a.remAssign(b)

a = 4

a %= 2

a = 0

【关系运算符】

Kotlin 为了节省空间,即便创建了两个 String,如果后一个实例内容和前者一致,那么会直接指向前者的地址,Int、Double也是这样。

运算符 名称 举例 a=1,b=2,c=2 结果
<

小于

翻译为 a.compareTo(b)>0

a < b true
>

大于

翻译为 a.compareTo(b)<0

a > b false
<=

小于等于

翻译为 a.compareTo(b)<=0

a <= b true
>=

大于等于

翻译为 a.compareTo(b)>=0

b >= c true

==

!=

内容相等

翻译为 a?.equals(b)?:(b===null)

b == c

a != b

true

true

内容不等

翻译为 !( a?.equals(b)?:(b===null) )

===

!==

同一对象

b === c

b !=== c

true

true

不同对象
val str1 = "Google"
val str2 = "google"
val str3 = str1
val str4 = "Google"
println(str1 == str2)   //false,内容不相同
println(str1.equals(str2))  //false
println(str1.equals(str2,true)) //true,第二个参数是忽略大小写
println(str1 === str2)  //false
println(str1 === str3)  //true,引用的是同一地址值
println(str1 == str4)       //打印:true
println(str1 === str4)      //打印:true
println(str1.equals(str4))  //打印:true

【位运算符】

运算符 名称 举例 a = 4 结果
shl(bits) 左移(类似Java的<<)

a shl (2)

16
shr(bits) 右移(类似Java的>>) a shr (2) 1
ushr(bits) 无符号右移(类似Java的>>>) a ushr (2) 1
and(bits) a and (2) 0
or(bits) a or (2) 6
xor(bits) 异或 a xor (2) 6
inv() 取反 a.inv() -5

【逻辑运算符】

运算符 名称 举例 a = true, b = false 结果
!

非(取反)

翻译为 a.not()

!a

!b

false

true

&&

逻辑与(并且)

左右都为true才是true

a && a

a && b

b && a

b && b

true

false

false

false

||

逻辑或(或者)

左右有一个true就是true

a || a

a || b

b || a

b || b

true

true

true

false

【其它符号】

符号 名称 说明
: 冒号 用于变量或常量声明,声明继承父类和实现接口
()

小括号

起到改变表达式运算顺序的作用,优先级最高
[]

中括号

翻译为 a.get(index)

索引访问
. 引用号 调用函数或属性
= 等号 赋值
? 可空 标识一个可空类型
?. 安全调用 调用非null类型的函数或属性
?: 空值合并运算符Elvis 当为null时希望返回其他数值(divide(3,0)?:0 不为null返回左边,为null返回右边)
!!. 非null断言 主观认定不会为null去调用,为null会抛异空指针常
:: 双冒号 用于Lambada表达式中类或成员引用
-> 箭头 用来声明Lambada表达式
* 展开运算符 将数组传递给可变参数时使用
//基本运算
var x = 3
val y = 7
val z = y / x.toDouble()    //若想保留小数,需要指定任意对象转换类型,2.3333333333333335
x += y + 3  //相当于x=x+y+3
 
//相等性检测,地址值比较
val a = Person("aa", 10)
val b = Person("aa", 20)
val c = Person("aa", 10)
println(a == b)     //false,内容不同
println(a == c)     //true,内容相同,如果Person没实现equals方法则为false
println(a === b)    //false,不是同一对象
println(a === c)    //false,不是同一对象

你可能感兴趣的:(Kotlin,kotlin)