從 Java 跳糟到 Kotlin (三) 控制邏輯流程

從 Java 跳糟到 Kotlin (三) 控制邏輯流程

Java & Kotlin 比較
從零開始學 Kotlin 程式設計: 線上教學課程目錄

控制邏輯流程

if 條件式

Java 與 Kotlin 的 if 條件式判斷一樣, if 後面接小括號,小括號內填入條件式,條件若成真(true),則會緊接執行後面的大括號{}區塊內的程式碼,若不成立(false),則會不會執行該區塊,會繼續往後面程式走。

Java 程式碼

int a = 1;
int b = 2;

if(a>b){
 //如果 a 大於 b 會執行此區塊
}else{
 //如果 a 沒有大於 b 會執行此區塊
}

Koltin 程式碼

var a = 1
var b = 2

if(a>b){
    //如果 a 大於 b 會執行此區塊
}else{
 //如果 a 沒有大於 b 會執行此區塊
}

三元運算符號

Java 程式碼

在 Java 中,有 ?: 三元運算符號,來簡化 if…else…程式碼
c = a > b ? 66 : 77;//如果 a>b,c=66,否则c=77

Koltin 程式碼

在 Kotlin 中,不用 ?: 三元運算符號,即可以簡化 if…else…程式碼
var c = if (a > b) 3 else 4

switch 與 when 多條件式判斷

Java 程式碼

在 Java 中,是使用 switch 關鍵字,來進行多條件式判斷
int a = 0;
switch (a) {
    case 0:
        break;
    case 1:
        break;
    default:
        break;
}

Koltin 程式碼

在 Kotlin 中,是使用 when 關鍵字,來進行多條件式判斷
var a = 0
when (a) {
    0 -> {}
    1 -> {}
    else -> {}
}
而 Kotlin 的 when 更強的的功能是,可以把多個條件放在一起,用逗號,分隔
var a = 0
when (a) {
    0 -> {}
    1,2 -> {
        //a 等於 1,也等於 2,會執行此程式區塊
    }
    else -> {}
}
另外 when 多條件判斷,還可以執行將:
var a = 1
var b = when (a) {
    0 -> 0  //如果 a=0,則 b=0
    1 -> 1  //如果 a=1,則 b=1
    else -> 2 //如果a不是0也不1,則 b = 2
}

in 範圍

Java 程式碼

在 Java 中,沒有 in 語法 ,要判斷 6 是否在 1~10 裡面:
int a = 6;
for (int i = 0; i < 10; i++) {
    if (i == a) {
        return true;
    } else {
        return false;
    }
}

Koltin 程式碼

在 Koltin 中,可以使用關鍵字 in 來判斷
if (6 in 1..10){ //其中 1..10 代表1、2 ... 到10的意思
    return true
}else{
    return false
}

is 判斷 object 類型

在 Kotlin 中,可以用關鍵字 is 來判斷對象的類型:
fun hasPrefix(x: Any) = when(x) {//kotlin中所有类都有一个共同的父类: Any
    is String -> { //如果x是String类型,执行该代码块 }
    is Int -> { //如果x是Int类型,执行该代码块 }
    else -> false
}
注意上面出現了 Any,Any 是 Kotlin 中,所有類別,都有一個共同的父類別,有點類似 Java 中的 Object,但這個類不是 java.lang.Object,這個類別,因為只有 equals()、 hashCode()、toString() 方法。

for 迴圈,循環控制

使用 for 迴圈,循環控制,索引遍歷,分別取出 array 或 list 內的資料:

Java程式碼

for (int i = 0; i < array.size(); i++) {
    System.out.println(i);
}

Kotlin程式碼

for (i in array.indices) {
    println(array[i])
}
除了普通的用法之外,Kotlin 的 for 迴圈,循環控制,還可以分別取出 index 與 value:
for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
    //index是索引,value是值
}

while 迴圈,循環控制

Java 和 Kotlin 的 while 迴圈,循環控制一樣,分為 while 和do…while:
var i = 0
while(i++ < 10){
    //...
}
do{
   //...
  }while(i++<10){
  //...
}

參考資料

留言

這個網誌中的熱門文章

16天記下7000單字

Costco 好市多 AFTERSHOKZ 骨傳導 藍牙運動耳機 AS650 開箱實測評價與心得