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 + 510
-

减法

翻译为 a.minus(b)

5 - 50
*

乘法

翻译为 a.times(b)

5 * 525
/

除法

翻译为 a.div(b)

5 / 51
%

取模

翻译为 a.rem(b)

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

a < b,a

a = b,0

a > b,余数

b = 1,1

..

获取区间

翻译为 a.rangeTo(b)

1..51,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 < btrue
>

大于

翻译为 a.compareTo(b)<0

a > bfalse
<=

小于等于

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

a <= btrue
>=

大于等于

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

b >= ctrue

==

!=

内容相等

翻译为 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,不是同一对象
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值