初識Kotlin(一)——進階日記
阿新 • • 發佈:2018-11-01
2017年Google就將Kotlin語言作為安卓開發的一級程式語言
作為一名Android開發者今日才初識Kotlin,略顯慚愧.... /汗顏
VS
Kotlin是什麼呢?
Kotlin 是一個用於現代多平臺應用的靜態程式語言
Kotlin可以編譯成Java位元組碼,也可以編譯成JavaScript,方便在沒有JVM的裝置上執行。
Kotlin相比於Java 又有什麼優勢呢?
Kotlin比Java更安全,能夠靜態檢測常見的陷阱。如:引用空指標
Kotlin
而且最主要的是 Kotlin實現了100% 和Java的相容,所以日常完全可以滿足Kotlin和Java混合開發的需求,這也給如小編這樣的初學者以緩衝期。
不過相信通過系統的Kotlin學習,你也會喜歡上它優雅的語言特點。
一.Kotlin基礎語法篇
初窺Kotlin發現它與Js的語法比較像哈....
1. 常量和變數以及常用關係
var 變數
val 常量
Kotlin句末不需要打分號
Kotlin的非null值判斷機制:
- Kotlin有兩種型別:一個是非空引用型別,一個是可空引用型別。
- 對於可空引用,如果希望呼叫它的成員變數或者成員函式,直接呼叫會出現編譯錯誤,有三種方法可以呼叫:
a 在呼叫前,需要先檢查,因為可能為null
b 使用b?.length的形式呼叫,如果b為null,返回null,否則返回b.length
c 使用b!!.length()的形式呼叫,如果b為null,丟擲空指標異常,否則返回b.length。val result = if (b != null) b.length else -1 b?.length val result = b!!.length
關於 ? 和 !! 在日常中有很多地方應用,暫且不表!不過通過對 ? 的應用,幾乎可以避免 Java 中的
NullPointerException
2.方法和基本資料
Kotlin中用 fun 來定義方法:
//無參
fun 方法名(引數值:引數型別){
方法體}
//有引數
fun 方法名(引數值:引數型別) : 返回值型別{
方法體}
fun onCreate(savedInstanceState: Bundle?) {
方法體}
fun add(x: Int, y: Int) : Int {
return x + y}
3. 基本資料型別
相對於於Java中的8種基本型別,Kotlin中提供了6種基本資料型別來滿足日常開發需求。
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8
字元型別(單獨的一種型別) Char,eg :val i: Int = b 這樣寫是錯誤的,java中這樣寫是正確的;
布林 Boolean
陣列 Array
字串 String
Kotlin多加了一個支援三個引號的框起來的字串,支援多行字串
Kotlin目前可以支援數字下劃線,如 val a:Int=2_520
4.Kotlin中的控制語句
4.1 for語句
kotlin:
for (i in 0..9) {
}
//遍歷集合
var list = ArrayList<String>()
for (i in list.indices){
var s = list[i]
}
Java:
for (int i = 0; i < 9; i++) {
}
//遍歷集合
List<String> list = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
}
4.2 選擇語句
Kotlin:
var a = 0
var b = "模樣"
when(a){
0 -> b = "哭" //簡單的處理
1 -> b = "笑"
2 -> b = "皺眉"
3 -> { //複雜的處理
a ++
b = "眨眼"
}
}
Java:
int a = 0;
String b = "模樣";
switch(a){
case 0:
b ="哭";
break;
case 1:
b ="笑";
break;
case 2:
b ="皺眉";
break;
case 3:
a++;
b ="眨眼";
break;
}
4.3 While語句
Kotlin 中的 while 迴圈語句 和 Java 中的基本相同!
4.4 區間表示式
for (i in 1..4) print(i) // 輸出“1234” 都是閉區間
也可以使用 遞增行數 until 範圍[n,m) 左臂右開區間
// 迴圈5次,步長為1的遞增
for (i in 0 until 5){ // for(i=0;i<5;i++)
print("i => $i \t")
}
對比以上2種,意思相同,區間不同
for (i in 4..1) print(i) // 什麼都不輸出 相當於數學中的 >=4 且<=0
也可以使用downTo 範圍[ n,m]
for (i in 5 downTo 0){ // for(i=5;i<0;i--) 輸出 5 4 3 2 1 0
print("$i")
}
步長關鍵字 step:
for (i in 10 until 16 step 2){ // 10 12 14
print(" $i")
}