day05

一元操作符
Kotlin中一元操作符分为 一元前缀操作符 和 递增与递减操作符

一元前缀操作符
这些操作符以及所有其他操作符都针对基本类型做了优化,不会为它们引入函数的调用:

+a ==> a.unaryPlus()
-a ==> a.unaryMinus()
!a ==> a.not()
递增递减运算符
inc() 和 dec() 函数返回一个值,它用于赋值给使用++ 或 – 操作的变量。

a++ ==> a=a.inc()
a-- ==> a=a.dec()
计算表达式的步骤是:

把 a 的初始值存储到临时空间a0
把 a.inc() 结果赋值给 a
把 a0作为表达式的结果返回
二元运算符
在Kotlin中所有算数运算符的本质,均是调用了它们对应的函数

算数运算符
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.mod(b) (已弃用)
a … b ==> a.rangeTo(b)
注意:%运算 ,自 Kotlin 1.1 起支持 rem 运算符。Kotlin 1.0 使用 mod 运算符,mod 运算符在Kotlin 1.1 中被弃用。

data class Counter(val dayIndex: Int) {
	operator fun plus(increment: Int): Counter {
		return Counter(dayIndex + increment)
	}
}

1
2
3
4
5
" in "操作符
a in b ==> b.contains(a)
a !in b ==> b.contains(a)
b.contains(a)函数: 用来判断在b中是否包含a,返回值为布尔类型

数组操作符
方括号转换为调用带有适当数量参数的 get 和 set 函数。

表达式 含义
a[i] a.get(i)
a[i, j] a.get(i, j)
a[i_1, …, i_n] a.get(i_1, …, 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)
调用操作符
圆括号则转换为调用带有适当数量参数的 invoke函数。

表达式 含义
a() a.invoke()
a(i) a.invoke(i)
a(i, j) a.invoke(i, j)
a(i_1, ……, i_n) a.invoke(i_1, ……, i_n)
复合操作符
对于复合赋值操作,先进性逻辑运算,再进行赋值

表达式 含义
a += b a.plusAssign(b)
a -= b a.minusAssign(b)
a *= b a.timesAssign(b)
a /= b a.divAssign(b)
a %= b a.remAssign(b)
注意:赋值在 Kotlin 中不是表达式。

相等与不等操作符
这些操作符只使用函数 equals(other: Any?): Boolean,可以覆盖它来提供自定义的相等性检测实现。不会调用任何其他同名函数(如 equals(other: Foo))。

表达式 含义
a == b a?.equals(b) ?: (b === null)
a != b !(a?.equals(b) ?: )
注意:=== 和 !==(同一性检查)不可重载,因此不存在对他们的约定。
这个 == 操作符有些特殊:它被翻译成一个复杂的表达式,用于筛选 null 值。
null == null 总是 true,
对于非空的 x,x == null 总是 false 而不会调用 x.equals()。.

比较操作符
所有的比较都转换为对 compareTo 的调用,这个函数需要返回 Int 值

表达式 含义
a > b a.compareTo(b) > 0
a < b a.compareTo(b) < 0
a >= b a.compareTo(b) >= 0
a <= b a.compareTo(b) <= 0

作者:weixin_44270896
来源:CSDN
原文:https://blog.csdn.net/weixin_44270896/article/details/95314607
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值