Kotlin语法基础篇(三)

Kotlin语法基础篇(三)

相关链接:
CSDN github 简书
Kotlin语法基础篇(二)
Kotlin语法基础篇(四)


逻辑控制语句、关键词: ifforwhiledo…whilewhen和相关的 breakcontinuereturn

一、if

相比于Java中的if语句,在Kotlin中具有更为便捷高效的用法,示例

 //1、常规
        if (a>0){
            print("It's OK")
        }else{
            print("very bad")
        }
        //2、作为三目运算 Java中类似a>0?"":""的三目运算在Kotlin中用if else代替
        str= if (a>0) "OK" else "not OK"
        //3、条件代码块,可以理解为加强版的 上一个 表达式,可以类似后面提到的when表达式
        str = if (a<9){
            "咋么小于9"
        }else if (a>10){
            "感觉条件不充足,不管了,反正有兜底的"
        }
        else{
            "我是兜底的"
        }
二、for语句

Java中略有不同,没有了(i;i<x;i++)这类表达,更多的是forEach形式的,基于自身索引index

fun testFor() {
        //1、常规自增、自减
//        for (i in 0 until 10){//左闭右开[0,10)
//            println(i)
//        }
//        for (i in 0..10) {//取值[0,10],自增的渐变写法,类似until但是取值范围不同
//            println(i)
//        }
//        for (i in 10 downTo 0) {//左右都包含[10,0]
//            println(i)
//        }

        for (i in 0 until 10 step 2) {//指定每次循环跳跃的步幅,在until,.. downTo都可以用
            println(i)
        }
    }

    fun testFor2() {
        //基于索引,遍历操作
        //1、字符串索引
//        for (i in "abdesdlagjwe"){
//            println(i)
//        }

        //2、数组遍历
        val arr = arrayOf(2, 0, "3", 'c', true)
//        for (i in arr){
//            println(i)
//        }
        //3、数组自身属性遍历
//        for (i in arr.indices){//其中indices是IntRange类型,i就是索引
//            println(arr[i])
//        }
        //4、withValue数组遍历
//        for ((index,value) in arr.withIndex()){//这个算是kotlin的高级语法操作,很多业务场景中方便实用
//            println("$index , $value")
//        }
        //todo 这里就啰嗦一句了,学习更多的是靠自己主动探索,类似上面的,遇到一个新的类,就点进去看原码,看看函数调用,试试,就会学到一些
        //数组自身的迭代器
        val iterator = arr.iterator()
//        while (iterator.hasNext()) {
//            println(iterator.next())
//        }
        //forEach函数,lambad表达式,默认参数形参为it,可以自定义如:iterator.forEach{xp->println(xp)}
        iterator.forEach {
            println(it)
        }
    }
三、when

when类似于Java中的switch…case语句


    fun testWhen() {
        //Kotlin中没有了swith。。case,改用when,真心觉得更强大
        //1、替代switch...case
        val index = 3
        when (index) {
            1 -> {
                println("不对")
            }
            2 -> println("差一点")//只有一行,其实不用花括号
            3 -> {
                println("OK")
            }
            else -> {
                println("nothing")
            }
        }

        //2、多重合并的case
        when (index) {
            1, 2, 4, 5 -> {
                println("不对")
            }
            0, -1, -3 -> println("差一点")//只有一行,其实不用花括号
            3 -> {
                println("OK")
            }
            else -> {
                println("nothing")
            }
        }
        //3、突破局限,条件语句可任意,这里就相当于if了
        when (a > 0) {
            false -> {
                println("不对")
            }
            true -> {
                println("OK")
            }
            else -> println()//这里可以省略掉了,因为true和false必然走一个
        }
        //4、case条件突破常规
        var any: Any? = null
        when (any) {
            in 0..7 -> println("index 在0~7之间,index是$index")
            is Int -> println("index$index 是Int类型")
            !is String -> println("咋可能不是Int")
            any as Int !in -1..9 -> println("凑数呢?,仅仅演示when的强大case用")//这里前面加个as 转换类型,不然语句!in 编译报错
            else -> {
                println("Nothing 吧")
            }
        }
        //5、无表达式when,类似于if了,在when中,else代码块,放在最后,兜底用的
        when {
            true ->
                println("www")
            false -> println()
            else -> {
                println("nnn")
            }
        }
    }
四、whiledo…while

这两个循环语句,在多数的编程语言中用法大多是一致的

fun testWhile() {
        //while 与 do while 用法在好多编程语言中,都是类似的
        while (a > 3) {
            a--
            println(a)
        }
        do {
            println("hhh")
        } while (a > 2)
    }
五、breakreturncontinue

在多数的编程语言中,这三个关键词的作用也大致相同

fun testBRC(){
        //break,return continue

 //1、return 返回最近一层的函数,或匿名函数
        var str = ""
        //不同于java,kotlin中函数内可以定义函数
        fun aa(){
            if (str.isEmpty()){
                println("str empty")
                return//这里就return出aa函数了,后续文章会讲解@label用法
            }
        }
        aa()//调用aa函数,

        //2、终止最近的一层循环
        for (i in 0..5){
            println("i 是啥$i")
            if (i==2){
                print("=2时候出去了")
                break//=2的时候循环终止,到不了5
            }
        }

        //3、continue,在循环中,终止本次的循环后操作,进入下一圈
        for (i in 0..5){
            if (i==2){
                println("=2时候下一个了,所以出不来i=2")
                continue//=2的时候循环终止,到不了5
            }
            println("i =$i")
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值