Kotlin基礎(chǔ)教程之操作符與操作符重載
Kotlin基礎(chǔ)教程之操作符與操作符重載
Kotlin操作符的使用方法與其他語(yǔ)言差不多,最大的特點(diǎn)就在于infix function call(事實(shí)上infix function call并不是操作符的特性,而是函數(shù)的特性)和操作符重載.



可以看到在Kotlin中大部分的操作符都與一個(gè)函數(shù)相對(duì)應(yīng),之所以這樣做,大概是為了進(jìn)行操作符重載.
Kotlin官方文檔中強(qiáng)調(diào)"=賦值"操作在Kotlin中不是操作符,換句話說(shuō)類似于x = y = z這樣的連續(xù)賦值并不被允許(甚至賦值操作也不能和常規(guī)的表達(dá)式混合寫(xiě)).
我們知道在C++語(yǔ)言里面操作符就是一個(gè)函數(shù),在Kotlin中也是如此.
至于infix function call,目前來(lái)看,如果在類中定義了只包含一個(gè)參數(shù)的函數(shù),比如Int.plus(Int)函數(shù)是在Int類中定義,而且只有一個(gè)參數(shù),那么這樣的函數(shù)就可以簡(jiǎn)寫(xiě).val x = 1.plus(1)可以簡(jiǎn)寫(xiě)為val x = 1 plus 1
上面的代碼運(yùn)行結(jié)果如下:

至于操作符重載,如下:

運(yùn)行結(jié)果如下:

操作符重載并不能增加新的操作符,也不能改變操作符的優(yōu)先級(jí)和結(jié)合性.
操作符的結(jié)合性(左結(jié)合,右結(jié)合)與Java相同,然而操作符的優(yōu)先級(jí)官方文檔并未給出,目前來(lái)看和Java并不完全相同,這主要是因?yàn)镵otlin中操作符和Java中性質(zhì)并不完全相同.
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
java中的String定義的字面量最大長(zhǎng)度是多少
這篇文章主要介紹了java中的String定義的字面量最大長(zhǎng)度是多少,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
JAVA中的deflate壓縮實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇JAVA中的deflate壓縮實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
Java map 優(yōu)雅的元素遍歷方式說(shuō)明
這篇文章主要介紹了Java map 優(yōu)雅的元素遍歷方式說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
Springcloud+Mybatis使用多數(shù)據(jù)源的四種方式(小結(jié))
這篇文章主要介紹了Springcloud+Mybatis使用多數(shù)據(jù)源的四種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java核心教程之常見(jiàn)時(shí)間日期的處理方法
這篇文章主要給大家介紹了關(guān)于Java核心教程之常見(jiàn)時(shí)間日期的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Spring Bean生命周期之Bean元信息的配置與解析階段詳解
這篇文章主要為大家詳細(xì)介紹了Spring Bean生命周期之Bean元信息的配置與解析階段,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03

