3-1 认识Kotlin——基本的条件分支、循环、等式、字符串校验

学习里程碑

2018年08月10日 - 1-1初次认识Kotlin,实现Hello Word附源代码

2018年08月16日 - 2-1 认识Kotlin——数据类型


本章也是很简单的

  • 条件分支

if…else… 

用法和 Java  基本一致的,Kotlin在这里做了优化允许语句返回字符串,方便直接赋值

       println("------------- if else --------------")
        var str91: String
        var num92: Int = 1
        str91 = if (num92 == 1) "进入if" else "进入else"
        println(str91)



输出结果
------------- if else --------------
进入if

when …else…

println("------------- when else --------------")
        var num98: Int = 1
        var str99: String = ""
        str99 = when (num98) {
            0 -> "数字 0"
            1 -> "数字 1"
            else -> "这里是else"
        }
        println(str99)



输出结果
------------- when else --------------
数字 1
        println("------------- when else --------------")
        var num98: Int = 100
        var str99: String = ""
        var num100: Int = 100
        str99 = when (num98) {
            0 -> "数字 0"
            num100 -> "数字 num100=100"
            else -> "这里是else"
        }
        println(str99)



输出结果
------------- when else --------------
数字 num100=100

优化后的 when … else … 也允许有返回值;不需要在break ; case 常量值 被 -> 代替了;Java 的 case后面只能跟常量,Kotlin 去掉了这个规则,允许引入变量,也可以引入具体的运算表达式。 也可以使用 in  或 !in 下边看代码:

 println("------------- when else --------------")
        var num98: Int = 1
        var str99: String = ""
        str99 = when (num98) {
            in 10..15 -> "num98 in 10 至 15"
            1,2,4,6,9 -> "num98 in 1,2,4,6,9"
            !in 18..20 -> "num98 !in 18 19 20"
            else -> "这里是else"
        }
        println(str99)



输出结果
------------- when else --------------
num98 in 1,2,4,6,9
  • 循环处理

kotlin 的 for(item in list) 这个 形式和Java for(item :list) 类似 就说了,不明白的自行百度一下吧

Kotlin 停用了 for(初始;条件;增减) 换成了 for(i in 数组变量.indices) ,这里indices 表示数组下标,看代码

println("------------- for --------------")
        var str110: String = ""
        var forArray: Array<String> = arrayOf("千山鸟飞绝", "万径人踪灭", "孤舟蓑笠翁", "独钓寒江雪")
        for (i in forArray.indices) {
            if (i % 2 == 0) {
                str110 = "$str110${forArray[i]},\n"
            } else {
                str110 = "$str110${forArray[i]}。\n"
            }
        }
        print(str110)




输出结果
------------- for --------------
千山鸟飞绝,
万径人踪灭。
孤舟蓑笠翁,
独钓寒江雪。

条件循环 Kotlin 增加了until,step,downTo

for(i in 1 until 5)……    //左闭右开区间(包含 1 ,不包含 5)

for(i in 1..10 step 2)……    //i在1到10 之间,每次递增2

for(i in 8 downTo 3)……    //递减 输出结果:876543; i 从8递减到3

while循环 、 do …while… 循环 没有变化 和Java 一样

  • 跳出循环

关键字: continue 继续下一个循环

                 break 跳出循环

  var str110: String = ""
        var forArray: Array<String?> = arrayOf("千山鸟飞绝", null, "万径人踪灭", " ", "孤舟蓑笠翁", "独钓寒江雪", "  ", "独钓寒江雪")
        var num112: Int = -1
        var count: Int = 0
        while (num112 <= forArray.size) {
            num112++
            if (forArray[num112].isNullOrBlank())//忽略空或空字符串,继续下一个
                continue
            if (num112 % 2 == 0)
                str110 = "$str110${forArray[num112]},\n"
            else
                str110 = "$str110${forArray[num112]}。\n"
            count++
            if (count == 4) break//4行后结束循环
        }
        print(str110)




输出结果:
千山鸟飞绝,
万径人踪灭,
孤舟蓑笠翁,
独钓寒江雪。
        println("------------- while --------------")
        var forArray: Array<String> = arrayOf("千山鸟飞绝", "万径人踪灭", " ", "孤舟蓑笠翁", "独钓寒江雪", "  ", "独钓寒江雪")
        var ii: Int = 0
        var boo113: Boolean = false
//在外层添加了outside标记
        outside@ while (ii < forArray.size) {
            var j: Int = 0
            var item = forArray[ii]
            while (j < item.length) {
                var sss = item[j].toString()
                if (sss == "孤") {
                    boo113 = true
                    break@outside //里边在遇到 @outside 标记时,直接跳出 outside 循环
                }
                j++
            }
            ii++
        }
        print(boo113)



输出结果
------------- while --------------
true

最好可以debug run看一下 ,Kotlin可以在循环外层加 @ 标记,当遇到 @ 标记时,直接跳出外层这个标记。kotlin 可以通过break@标记位  实现跳出多重循环。

Kotlin 校验字符串空值的方法:

isNullOrEmpty为空指针或字符串长度为0时返回true,非空串与可空串都可以调用
isNullOrBlank为空指针或字符串长度为0或全为空格时返回true,非空串与可空串都可以使用
isEmpty字符串长度为0 时返回true,只允许非空串 使用
isNotEmpty字符串长度大于0时返回true,只允许非空字符串使用
isBlank字符串长度为0 或 全为空格时返回true,只允许非空串 使用
isNotBlank字符串长度大于0且不是全空格字符串时返回true,只允许非空串可调用

声明可为空的变量:

var str1:String = "非空"

var str2:String? = ""

var str3:String? = null 

声明变量实例时,在类型名称后边加问号,表示该变量可以为空。

调用变量方法时,在变量名称后面加问号,表示一旦变量为空就返回null

运算符 “?:” ,表示一旦变量为空,就返回该运算符右边的表达式

运算符 “!!" , 通知编译器不做非空校验。如果运行时发现变量为空,就抛出异常

等式判断:

Kotlin  把等式判断分为:结构相对 和 引用相等

结构相等,在Kotlin 中所有数据类型都可用 == 和 != 进行等式判断。这种不比较存储地址,而是比较变量结构内部值,称为 结构相等。

        println("------------- 等式判断 --------------")
        var str130: String = "你好"
        var str131: String = "您好"
        var str132: String = "你好"

        if (str130 == str131)
            print("str130 == str131")
        else if (str130 == str132)
            print("str130 == str132")
        else if (str131 == str132)
            print("str131 == str132")





输出结果
------------- 等式判断 --------------
str130 == str132

引用相等,运算符号是 === 和 !==,还是看一下书上的概念吧:

运算符is 和 !is  写法 : 变量名称  is 类型名称

    println("------------- is 和 !is --------------")
        var num144: Int = 123
        var result = num144 !is Int
        print(result)




输出结果
------------- is 和 !is --------------
false

运算符  in 和 !in 的用法和is 是一样的,写法是:变量名 in  数组名


这章写的很多,但还是比较简单的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值