Kotlin學習之起點篇
概述
2017年google開發者大會上,Google正式將kotlin列為其官方語言。那麼,到底kotlin有何厲害之處呢?簡單來說,使用kotlin,可以讓程式碼更加簡潔和易讀,同時支援函數語言程式設計,100%相容老牌開發語言-Java,並且還有很多實用的語法糖。知乎上還有關於kotlin的大牛論戰,看法褒貶不一,但是,個人看來,kotlin是大勢所趨。如果你認為kotlin只能用來開發Android,那就太小看它的用處了,kotlin不僅可以用來開發Android端,還可以開發後臺服務端,前端等,怎麼樣是不是很強大?根據大神爆料,未來kotlin可能還會支援ios開發,因為它與swift語法實在太像了!
資料
到這裡,你還敢說你不心動嗎?是不是迫不及待想去學習一下了?什麼,如何學?個人看來,官方文件是最好的學習資料,如果覺得不夠,可以看官方推薦的基本不錯的書籍:<Kotlin in Action>,<Kotlin for Android Developers>,<Programming Kotlin>等,雖然都是國外書籍,但是講解很透徹和生動。點選這裡下載完整官方文件PDF版
常見用法
這裡簡單就java開發中常見用法與kotlin進行比較:
- for迴圈:
Java中我們寫一個for迴圈一般這樣寫:
List<String> list = new ArrayList<String>();
list.add("red");
list.add("green");
list.add("blue");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
而在kotlin中我們可以這樣寫:
val list = listOf("red", "green", "blue")
for (item in list) {
println(item)
}
- 多種情況的條件語句:
在Java裡,當我們碰到多種條件時,一般會用switch語句替代if-else語句,比如:
private void test(int sign){
switch (sign){
case 0:
System.out.println("this is 0");
break;
case 1:
System.out.println("this is 1");
break;
case 2:
System.out.println("this is 2");
break;
default:
throw new IllegalArgumentException("out of range!");
}
}
在kotlin中,我們甚至可以這樣:
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
- 區間用法:
如果我們需要將已知數字進行簡單篩選和排序,Java中無非使用for和if-else語句,而kotlin中可以這樣使用:
for (i in 4 downTo 1 step 2) print(i)
// 輸出結果為:“4 2”
我們還可以用in運算子來判斷集合內是否包含某個元素:
when {
"orange" in list -> println("juicy")
"apple" in list -> println("apple is fine too")
}
- 各種表示式:
以往,我們在Java中如果需要使用條件或者控制語句得到返回值,一般要在函式內部實現,而kotlin可以直接通過表示式來實現,比如這樣:
fun transform(color: String): Int {
return when (color) {
"Red" -> 0
"Green" -> 1
"Blue" -> 2
else -> throw IllegalArgumentException("Invalid color param value")
}
}
或者這樣:
fun foo(param: Int) {
val result = if (param == 1) {
"one"
} else if (param == 2) {
"two"
} else {
"three"
}
}
- 型別檢測:
我們可以使用
is
運算子來檢測一個表示式是否為某個型別的一個例項:
fun getStringLength(obj: Any): Int? {
// obj 在 && 右邊⾃動轉換成 String 型別
if (obj is String && obj.length > 0) {
return obj.length
}
return null
}
- 使用lambda表示式來過濾和對映集合:
fruits
.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }
......
最後
看過了這麼多kotlin用法,你對這門語言怎麼看呢?當然,我只是列舉了幾個kotlin中常見的語法糖,它的強大之處遠不止於此,更多用法可以參考官方文件,後面我也會分專題記錄其用法,並最終通過一個Android專案來展示。
如果你有更多建議和問題,歡迎留言一起探討,也歡迎一起加入Android開發大家庭:
相關文章
- vc 學習點滴之終結篇
- Kotlin之UI篇KotlinUI
- 演算法學習之旅,終點亦是起點演算法
- Java學習之反射篇Java反射
- Kotlin for android學習十四(佈局篇):資料庫KotlinAndroid資料庫
- 陪你一起學習之javascript事件JavaScript事件
- Kotlin 學習(2) Kotlin基礎Kotlin
- 一起學shell(十一)之安全的shell指令碼:起點指令碼
- Django之學習點滴Django
- swoft 學習筆記之 response 篇筆記
- Flutter Canvas學習之繪圖篇FlutterCanvas繪圖
- less學習之Bootstrap(按鈕篇)boot
- JAVA基礎學習篇之反射Java反射
- MySQL學習基礎之起航篇MySql
- 一起來學習 WebRTC (篇一)| 掘金技術徵文Web
- 一起來學習 WebRTC (篇二) | 掘金技術徵文Web
- 一起學習SSM框架之SpringMVC(五)SSM框架SpringMVC
- Kotlin學習筆記 其他Kotlin筆記
- MySQL 學習之索引篇和查詢MySql索引
- ollydbg破解教學之--------萬能斷點篇斷點
- laravel學習之nginx配置站點LaravelNginx
- jquery學習之重要知識點jQuery
- 一起學 TypeScript 配置篇TypeScript
- 安心學習,重學前端之(js基礎篇(1))前端JS
- 快速高效學習 Kotlin | Kotlin Bootcamp 課程介紹Kotlinboot
- Kotlin協程學習之路【一】Kotlin
- Kotlin for Java Developers 學習筆記KotlinJavaDeveloper筆記
- Kotlin學習筆記(5)- 類Kotlin筆記
- Kotlin 入門學習筆記Kotlin筆記
- 畫江湖之 Go 學習篇 【訊號量】Go
- 畫江湖之 Go 學習篇 [訊號量]Go
- ReactNative學習筆記四之動畫篇React筆記動畫
- Scala 學習筆記(1)之入門篇筆記
- Mysql 學習篇之原始碼安裝mysqlMySql原始碼
- Oracle學習筆記整理之遊標篇Oracle筆記
- 一起學 TypeScript 基礎篇TypeScript
- 使用Rust的幾點理由,加入我們,一起學習!Rust
- 一起學習RustRust