Kotlin运算符重载总结

运算符的重载是一个十分方便的特性,它让代码看起来更加的直观,写起来也更加的方便。在学C++的时候就十分喜欢这一语言特性。然而Java却对这一点没有任何的支持。现在同样作为JVM语言的Kotlin加入了运算符重载这一语言特性。接下来让我们看看,在Kotlin中究竟有哪些运算符可以重载呢?

一元运算符

表达式对应的函数说明
+aa.unaryPlus()
-aa.unaryMinus()取反
!aa.not()非运算

自加、自减

表达式对应的函数说明
a++a.inc()自增
a–a.dec()自减

二元运算符

表达式对应的函数说明
a + ba.plus(b)
a - ba.minus(b)
a * ba.times(b)
a / ba.div(b)
a % ba.rem(b), a.mod(b) (弃用)取模
a..ba.rangeTo(b)从a到b的区间

in运算符

表达式对应的函数说明
a in bb.contains(a)b包含a
a !in b!b.contains(a)b不包含a

下标访问

表达式对应的函数说明
a[i]a.get(i)获取位置i的值
a[i, j]a.get(i, j)获取位置 i 和 j 的值
a[i_1, …, i_n]a.get(i_1, …, i_n)获取 i_1到i_n的值
a[i] = ba.set(i, b)将位置 i 的值设置为 b
a[i, j] = ba.set(i, j, b)将位置 i 和 j 的值设置为 b
a[i_1, …, i_n] = ba.set(i_1, …, i_n, b)将 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)带n个参数的调用

增量运算

表达式对应的函数说明
a += ba.plusAssign(b)
a -= ba.minusAssign(b)
a *= ba.timesAssign(b)
a /= ba.divAssign(b)
a %= ba.remAssign(b), a.modAssign(b) (弃用)

相等运算

表达式对应的函数说明
a == ba?.equals(b) ?: (b === null)
a != b!(a?.equals(b) ?: (b === null))

比较运算

表达式对应的函数说明
a > ba.compareTo(b) > 0a大于b
a < ba.compareTo(b) < 0a 小于b
a >= ba.compareTo(b) >= 0a大于等于b
a <= ba.compareTo(b) <= 0a小于等于b

使用实例

class Complex(val real:Int,val virtual:Int){
    //对加号进行重载
    operator fun plus(complex: Complex)=Complex(this.real+complex.real,
            this.virtual+complex.virtual)

    override fun toString(): String {
        return "($real,$virtual)"
    }
}

fun main(args: Array<String>) {
    val com1=Complex(12,10)
    val com2=Complex(10,21)
    val result=com1 + com2
    println("${com1.toString()}+${com2.toString()}=${result.toString()}")
}

运行结果:

(12,10)+(10,21)=(22,31)

要想获取更多关于Kotlin的内容,请转至Kotlin学习网

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值