自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Google "招安"了Kotlin Kotlin初體驗(yàn)

企業(yè)動(dòng)態(tài)
每個(gè)語言的流行都需要一個(gè)引爆點(diǎn),就像Ruby on Rails 引爆了Ruby 一樣, Android 也許是之前不那么流行的Kotlin的引爆點(diǎn)。

[[191780]]

今天多個(gè)群都炸了鍋,原因很簡單: Google "招安"了Kotlin , 成為Android 平臺(tái)的first-class 開發(fā)語言。

據(jù)說在發(fā)布會(huì)上,這個(gè)消息的宣布獲得臺(tái)下最熱烈的歡呼聲。 這是為什么? 難道是因?yàn)锳ndroid開發(fā)者一直羨慕iOS有簡單好用的Swift, 但是自己只能用“傻大笨粗” 的Java, 現(xiàn)在終于可以翻身了,Kotlin救世主降臨了!

作為熱愛技術(shù)的碼農(nóng), 肯定***時(shí)間要去折騰一下。 不要在百度浪費(fèi)時(shí)間, 直奔官網(wǎng)(https://kotlinlang.org)就好。

嗯,官網(wǎng)還算大氣, 不過作為開源的語言,應(yīng)該用個(gè)動(dòng)物做Logo 啊 :-) 參見《這個(gè)動(dòng)物園,兩年也逛不完》

一、Hello world 的秘密

Hello world很快就映入眼簾:

別看代碼很短,里邊藏著很多秘密:

1. 這是一個(gè)強(qiáng)類型語言, 變量的類型確定以后,就不能改了

沒有聲明類型的msg 怎么辦? 肯定是自動(dòng)推導(dǎo)出來的, 是個(gè)字符串。此外 msg 類型已經(jīng)確定為字符串, 你要是想把msg改成整數(shù): msg = 5 ,肯定是要報(bào)錯(cuò)的。

強(qiáng)類型有個(gè)巨大的優(yōu)勢(shì),就是可以在編譯期自動(dòng)做類型檢查, 幫助程序員發(fā)現(xiàn)很多錯(cuò)誤。

2. 怎么和Go, Scala一樣, 把類型放到了變量名的后邊, 讓人有真氣逆行的感覺, 不調(diào)整下還真容易走火入魔。為什么要這樣?

Kotlin 的FAQ上說: We believe it makes the code more readable. Besides, it enables somenice syntactic features, for instance, it is easy to leave type annotations out. Scala has also proven pretty well this is not a problem.

嗯,更有可讀性,漂亮的語法特征, 似乎有點(diǎn)道理, 到底是不是這樣還得再研究, 既然人家已經(jīng)確定這樣了,就慢慢適應(yīng)吧。

3. 為了輸出hello world終于不用寫一個(gè)無用的類了!

但是等等, 這個(gè)Kotlin 不是號(hào)稱可以和Java 100%互操作嗎, 那java 程序想調(diào)用這些函數(shù)怎么辦? 沒有類怎么調(diào)用?

稍微想一想就會(huì)明白, Kotlin背后肯定需要生成一個(gè)類, 在這里類中有個(gè)靜態(tài)方法sum, 這樣才能讓別人使用嘛。

4. 我”熱愛 ”的public static void 去哪里了? System.out去哪兒了

對(duì)不起, kotlin需要的是精簡的語法, 已經(jīng)把細(xì)節(jié)給你隱藏起來了, 如果你用javap 看看背后生成的類,就會(huì)看到public static void main() 老老實(shí)實(shí)的在那里待著呢!

至于System.out,肯定是自動(dòng)導(dǎo)入了, 你要是不嫌麻煩,寫成java.lang.System.out.println("hello world") 應(yīng)該也可以運(yùn)行。

二、基本語法

Kotlin支持定義一個(gè)只能賦值一次的變量, 其實(shí)就是final 了:

這個(gè)語法糖還是挺方便的, 要想定義一個(gè)真正的變量該怎么辦?還有一個(gè)關(guān)鍵字: var

至于那些流程控制語句 if, else, for ,while 實(shí)在是沒什么新奇的,跳過。

這個(gè)when 是很不錯(cuò)的, 比java中的switch 不知道要高到哪里去了, 簡直讓人愛死了。

三、類 

感覺不錯(cuò)吧?

聲明了一個(gè)類, 構(gòu)造函數(shù)中的參數(shù)是name和age , 然后就可以當(dāng)做屬性來使用了,不用getter/setter 方法。

唉, 對(duì)我這個(gè)有分號(hào)強(qiáng)迫癥的人, 語句之間不寫分號(hào)還是挺痛苦的, 慢慢適應(yīng)吧。

四、繼承和多態(tài)

一個(gè)類想被繼承, 必須標(biāo)注為open 才行!

一個(gè)方法想被override , 展示出多態(tài), 父類的方法也得open , 子類需要聲明override!

這個(gè)規(guī)定要求真是嚴(yán)格啊!

五、Data class

在Java中我們經(jīng)常創(chuàng)建一些只保持?jǐn)?shù)據(jù),而沒有啥實(shí)際行為的類, 再來點(diǎn)語法糖:

hashCode, equals方法自動(dòng)生成

toString自動(dòng)生成

getter/setter自動(dòng)生成

很貼心吧?

六、集合

寫程序,基本的數(shù)據(jù)結(jié)構(gòu)是必備, kotlin也有語法糖前來助陣:

正如你能想到的, Kotlin 可以輕松地調(diào)用Java 的集合來做事情。

七、總結(jié)

Kotlin的特性有很多,沒法在這里一一展示, 就體驗(yàn)到這里吧。

總的來說, Kotlin這門語言簡化了Java , 完全是從一個(gè)是實(shí)用派的角度,而不是學(xué)院派的角度。

我在寫代碼的時(shí)候,總是有一種寫Javascript的感覺。

相比于JRuby , Jython這些一移植到JVM上的語言, Kotlin 和Java 和互操作感覺更加自然,但可能也是受限于Java平臺(tái), 寫出的代碼還是沒有Ruby 那么優(yōu)雅。

每個(gè)語言的流行都需要一個(gè)引爆點(diǎn),就像Ruby on Rails 引爆了Ruby 一樣, Android 也許是之前不那么流行的Kotlin的引爆點(diǎn)。

如果你是Android 開發(fā)者, 可以馬上學(xué)習(xí)下Kotlin ,畢竟有Google的支持,相比Java, Kotlin能極大的減少代碼量,代碼看起來也清晰易懂, 值得投入。如果是Java 后端程序員, 我覺得可以初步了解, 觀望一下。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)coderising獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2014-12-11 09:56:33

DockerKubernetesGoogle

2012-11-19 13:53:42

職場(chǎng)Google實(shí)習(xí)生

2022-02-28 10:38:13

Kotlin插件Android

2017-08-03 15:54:50

Kotlin繼承

2018-06-05 10:30:28

KotlinJava語言

2009-08-01 09:06:35

UbuntuOneLinux開源操作系統(tǒng)

2009-03-09 15:12:39

XenServer安裝

2018-01-03 11:51:06

KotlinTipsJava

2010-11-22 10:31:17

Sencha touc

2011-05-30 15:12:10

App Invento 初體驗(yàn)

2023-07-15 08:01:38

2017-12-27 14:51:12

Kotlin谷歌Java

2018-09-17 11:10:06

2011-09-05 10:20:21

Sencha ToucAPP

2013-05-28 10:22:03

2017-09-05 05:55:24

AWS ES集群大數(shù)據(jù)

2009-07-21 13:08:08

iBATIS DAO

2023-07-17 08:34:03

RocketMQ消息初體驗(yàn)

2025-04-10 07:30:43

2024-12-23 07:00:00

FastExcelEasyExcel開源框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)