下篇:第二篇:Kotlin之運(yùn)算符和表達(dá)式
1.分號(hào)
? ? 熟悉java開發(fā)的朋友都知道每寫完一行代碼最后要帶一個(gè)分號(hào)結(jié)尾。但是kotlin已經(jīng)不需要啦
如: setContentView(R.layout.activity_main) ? ? initToolbar()都不需要帶分號(hào)了。
2.變量聲明和方法
java: ?public void main() void關(guān)鍵字
kotlin: public fun main() fun作為方法的關(guān)鍵字
//聲明變量和指定類型

? ? a和b表示聲明變量的名字,Int表示聲明變量的類型,中間用:表示。
? ? 細(xì)心的朋友一定會(huì)發(fā)現(xiàn)一個(gè)是var, 一個(gè)是val, 它們的區(qū)別是什么呢。
? ? var其實(shí)就是跟正常java賦值變量一樣可以進(jìn)行g(shù)et, set方法。但是val其實(shí)就是java加一個(gè)關(guān)鍵字final只有g(shù)et方法不能set方法。 也就是說a變量可以重新賦值,但是b因?yàn)轭愃朴趂inal所以不能重新賦值。
? ? 當(dāng)然你可以省略變量的類型,因?yàn)閗otlin會(huì)通過你賦值的類型去自動(dòng)識(shí)別。

? ? Kotlin支持的基本類型和java一樣,如下。但是有一點(diǎn)切記Kotlin進(jìn)行對(duì)變量或者對(duì)象初始化的時(shí)候一定要賦上初始值。?

? ? ${}的用法的介紹,在字符串里調(diào)用b

3.null安全
? ? null可以說是Kotlin語言對(duì)java的重大改進(jìn)之一,這樣可以便面了Java編程時(shí)令人恐懼的NullPointerException。
例子如下

? ? 首先因?yàn)閟tr里沒有數(shù)字所以執(zhí)行到numOne會(huì)報(bào)錯(cuò), 因?yàn)镵otlin支持2種類型,一種是非空類型,另一種是可空類型??煽疹愋托枰獛в校勘硎痉?hào),因?yàn)閚umOne沒有帶有?所以它屬于非空類型,又由于str帶有字符串所以返回的會(huì)是null,所以再行在執(zhí)行numOne的時(shí)候會(huì)報(bào)錯(cuò)。numTwo 和numThree是可空類型,numTwo把類型省略掉了Kotlin會(huì)跟你賦予的值來自動(dòng)識(shí)別所以numTwo和numThree是一樣的。numFour因?yàn)檗D(zhuǎn)成的是int或者是null,但是numFour接受是非null類型,所以在編譯的時(shí)候回報(bào)錯(cuò)。
在定義一個(gè)實(shí)體類Dog, 并且設(shè)置可null類型,在調(diào)用的時(shí)候一定需要帶有安全調(diào)用否者會(huì)報(bào)錯(cuò)。

此外,安全調(diào)用還可以與let全局函數(shù)結(jié)合使用,

注意:調(diào)用某對(duì)象的let函數(shù),則該對(duì)象為函數(shù)的參數(shù)。在函數(shù)塊內(nèi)可以通過?it?指代該對(duì)象。返回值為函數(shù)塊的最后一行或指定return表達(dá)式。因?yàn)樽詈笠恍袨榉祷刂担悦總€(gè)arr結(jié)果打印都是3。kotlin想這樣的以最后一行為返回值的還有很多如run ? with等都是這樣的。其他的語法糖會(huì)在接下來的文章里逐一介紹。

? ? for和arrayOf接下來會(huì)介紹,不過相信有編程經(jīng)驗(yàn)的同學(xué)應(yīng)該可以看懂的,arrayOf是數(shù)組, for遍歷數(shù)組let是kotlin其中的一個(gè)語法糖,也就是說item如果不為null的話會(huì)調(diào)用let里邊的函數(shù), it是關(guān)鍵字代表item的值。是不是感覺很爽,如果要是java還得加上判斷等,用kotlin直接用let的語法糖就可以了。當(dāng)然了有的時(shí)候需要的類型是非null的類型,如何將可null的類型傳進(jìn)去呢。這個(gè)時(shí)候用到了Kotlin的強(qiáng)制調(diào)用 !!帶有兩個(gè)嘆號(hào)的修飾符。下邊的例子也就是說無論item為不為null都會(huì)調(diào)用。但是這回引發(fā)“NPE”空指針異常,所以一定要慎用。(有一些調(diào)用android控件的方法的時(shí)候就需要傳入非空類型,所以具體的事情具體分析)

4.Kotlin字符串的用法
雖然Kotlin的string和Java的string并不是同一個(gè)類,但是這個(gè)2個(gè)類所提供的功能大致相似。實(shí)際上Kotlin的String類提供了更多的方法,如提供了一系列的toXxx()方法將字符串轉(zhuǎn)成數(shù)值,例子如下
val s1 = "2.34"
val d: Double = s1.toDouble()

我也就不一一介紹了,具體可以參考Koltin官方
對(duì)于有一定java經(jīng)驗(yàn)的開發(fā)者來說,前面的幾個(gè)章節(jié)過于簡(jiǎn)單了,所以我認(rèn)為大概瀏覽一遍即可。后續(xù)文章會(huì)盡快更新~