kotlin的 if,when,for,while语句

简介

kotlinJava一样,都有自己的流程控制语句,比如分支语句、循环语句和跳转语句等,而且两者区别不是很大,kotlin相对java的流程控制语句,使用更灵活,功能更强大


if

if-else语句,代表如果满足条件就执行if的内容-否则就执行else内容,是最基本的条件控制(else可省略)

Java

Java中if-else语句只能作为普通语句使用,也必须在方法里使用

  public String ifTest(int position) {
        if (position == 0) {
            return "ok";
        } else {
            return "no";
        }
    }

Kotlin

Kotlin中if-else语句基本用法和java一样,可作为普通语句使用
Kotlin中if-else语句,还可以做为表达式,也不用写在函数式里面

   //作为传统语句使用基本用法
   fun ifTest(position: Int): String {
         if (position == 0) {
             return "ok"
        } else {
             return "no"
        }
    }
  //简写用法
   fun ifTest(position: Int): String {
        return if (position == 0) {
            "ok"
        } else {
            "no"
        }
    }
  //作为表达式使用
  var position = 10
  var name = if (position == 0) "ok" else "no"

可以很方便的封装三目运算符

//三目运算函数select
fun <T> select(isTrue: Boolean,
  params1: () -> T,
  params2: () -> T) = if (isTrue) params1() else params2()
//使用
var name =select(position==0, {"ok" }, {"no"})

when

Kotlinwhen语句相当于Javaswitch,只不过相对更加的强大,灵活性更好。

Java

Java的switch只能作为传统语句使用,对所有的分支进行检查到有一个满足条件就可控制跳出

   private String ifTest(int position) {
        String name ;
        switch (position) {
            case 0:
                name = "ok";
                break;
            case 1:
                name = "yes";
                break;
            default:
                name = "no";
        }
        return name;
    }

kotlin

kotlin的when可以做传统语句使用
kotlin的when可以做表达式使用
kotlin的when中不需要switch中的case-break·语句直接用->表示一条分支
kotlin的when中每个分支中->后的执行语句大于一条,需要用{}包裹
kotlin的when中多个分支中执行相同语句,用,隔开

//传统用法
 fun ifTest(position: Int): String {
  when (position) {
     0 -> return "ok"
     1,2 -> return "yes"
     else -> return "no"
     }
  }
//表达式简化用法
   private fun ifTest(position: Int): String {
        return when (position) {
            0 -> "ok"
            1, 2 -> "yes"
            else -> "no"
        }
    }
// 表达式可以不用写在函数内部
  var name=when (position) {
     0 -> "ok"
     1, 2 -> "yes"
     else -> "no"
   }

for

Java

Java中循环有普通循环和增强循环

//普通循环
int name;
for(int i=0;i<100;I++){
if(i==0){
name="ok";
}else {
name ="no";
}
}
//增强循环
List<String> list =new ArrayList<>();
list.add("ok");
list.add("yes");
list.add("no");
for(String name:list){
  Log.d("list",name)
}

Kotlin

Kotlin中循环通过任何提供的迭代器进行迭代或者使用高级函数
Kotlin中for循环不能作为表达式

//迭代器循环
var list =arrayOf("ok", "yes", "no") 
for (item in list){
    print(item)
 }
//迭代角标循环,indices为下标
var list =arrayOf("ok", "yes", "no") 
for (i in list.indices){
    print(array[i])
 }
//forEach函数,it即为item
var list =arrayOf("ok", "yes", "no") 
list.forEach{
print(it)
}

while ,do ..while

while循环开始时,先判断()值,如果满足条件,进入循环体,再判断…,直到不满足条件,将跳出循环。
do..while循环开始时,先进入循环提一次,再判断()值,如果满足条件,进入循环,再判断…,直到不满足条件,将跳出循环。

Java中的while,do while和 Kotlin 中差不多
Kotlin中while,do while循环不能作为表达式

    //kotlin中while
    var i =0
    while (i<=10){
        println(i)
        i++
    }
   //kotlin中do while
   var i=10
    //do...while循环输出到0
    do {
        println(i)
        i - -
    }while (i>0)

猜你喜欢

转载自blog.csdn.net/zybieku/article/details/79162162