從 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){
  //...
}

參考資料

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

16天記下7000單字

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)

Android Studio 歷代版本下載點