自從谷歌爸爸在2017I/O開發(fā)者大會上宣布了這個干兒子昔善,kotlin就成了編程界的新進(jìn)網(wǎng)紅。相信大多數(shù)人和我一樣在大會宣布之后才恍然大悟——原來還有這么個語言啊畔乙。這門語言問世了短短五君仆、六年的時(shí)間,其面向JAVA的互操作性,安全性返咱,簡潔性等突出特點(diǎn)直接被谷歌爸爸看中钥庇。其實(shí)除了它的天賦以后,它的背景也是受人關(guān)注的咖摹。開發(fā)團(tuán)隊(duì)JetBrains本來就是最火的JAVA IDE——Intelli J的供應(yīng)商评姨,不管是Eclipse,還是Android Studio萤晴,都是基于Intelli J內(nèi)核構(gòu)建的IDE吐句。親孫子在此,當(dāng)然要收了它了店读。目前用kotlin營運(yùn)的項(xiàng)目也是不少的嗦枢,比如Uber的內(nèi)部工具,Coursera客戶端两入,Evernote客戶端净宵,Gradle等,因?yàn)镴AVA的互操作性裹纳,凡是能跑在JVM上的代碼择葡,kotlin看似都沒有問題,其相對于JAVA笨重的屬性剃氧,kotlin會不會完全取代JAVA呢敏储,這一直是當(dāng)今業(yè)界討論的話題。
天下大勢合久必分朋鞍,分久必合已添。數(shù)風(fēng)流人物,還看今朝滥酥。kotlin是英雄還是梟雄更舞,現(xiàn)在就來會會它。
先來看看其基本類型和相關(guān)語法:
數(shù)字
有七種類型:
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8
表示方法:
Long 類型用大寫 L 標(biāo)記: 123L
十六進(jìn)制: 0x0F
二進(jìn)制: 0b00001011
十進(jìn)制: 123
注意: 不支持八進(jìn)制
kotlin有一個新的特性:數(shù)字字面值中可以添加下劃線劃分?jǐn)?shù)字段
如下:
val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010
這樣的好處就是坎吻,銀行卡缆蝉、電話號碼、十六進(jìn)制等特殊數(shù)字量能夠明顯的辨別瘦真。
值得注意的是刊头,在kotlin中較小的類型不能隱式轉(zhuǎn)換為較大的類型。 這意味著在不進(jìn)行顯式轉(zhuǎn)換的情況下我們不能把 Byte 型值賦給一個 Int 變量诸尽。
Kotlin支持?jǐn)?shù)字運(yùn)算的標(biāo)準(zhǔn)集原杂,運(yùn)算被定義為相應(yīng)的類成員(但編譯器會將函數(shù)調(diào)用優(yōu)化為相應(yīng)的指令)。
字符
在 Kotlin 中字符不是數(shù)字您机,不能像C語言那樣對其進(jìn)行數(shù)字運(yùn)算穿肄,轉(zhuǎn)換后方可年局。
對于位運(yùn)算,沒有特殊字符來表示被碗,而只可用中綴方式調(diào)用命名函數(shù)某宪。也就是沒有像JAVA左移<<這樣的符號表達(dá)式了,去而代之的是字母表達(dá)式——
shl(bits) – 有符號左移 (Java 的 <<)
數(shù)組
關(guān)于數(shù)組锐朴,在 Kotlin 中使用 Array 類來表示兴喂,它定義了 get 和 set 函數(shù)(按照運(yùn)算符重載約定這會轉(zhuǎn)變?yōu)?[])和 size 屬性,以及一些其他有用的成員函數(shù)焚志。
注意: 與 Java 不同的是衣迷,Kotlin 中數(shù)組是不型變的(invariant)。這意味著 Kotlin 不讓我們把Array<String>賦值給Array<Any>酱酬,以防止可能的運(yùn)行時(shí)失敽恕(但是你可以使用Array<out Any>)。
Kotlin 也有無裝箱開銷的專門的類來表示原生類型數(shù)組: ByteArray膳沽、 ShortArray汗菜、IntArray 等等。這些類和 Array 并沒有繼承關(guān)系挑社,但是 它們有同樣的方法屬性集陨界。
字符串
字符串用 String 類型表示。字符串是不可變的痛阻。 字符串的元素——字符可以使用索引運(yùn)算符訪問: s[i]菌瘪。 可以用 for 循環(huán)迭代字符串。
Kotlin 有兩種類型的字符串字面值: 轉(zhuǎn)義字符串可以有轉(zhuǎn)義字符阱当,以及原生字符串可以包含換行和任意文本俏扩。轉(zhuǎn)義字符串很像 Java 字符串。
字符串可以包含模板表達(dá)式 弊添,即一些小段代碼录淡,會求值并把結(jié)果合并到字符串中。 模板表達(dá)式以美元符($)開頭油坝,由一個簡單的名字構(gòu)成嫉戚。
形如:
val i = 10
val s = "i = $i"http://結(jié)果為“i = 10”
最后,附上程序員必學(xué)代碼:
package hello
fun main(args : Array<String>){
println("Hello World!")
}
在這里我只是摘出了需要注意的內(nèi)容提供學(xué)習(xí)免钻。
詳細(xì)學(xué)習(xí)請轉(zhuǎn)到kotlin中文官網(wǎng)彼水。