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