熬夜再战Android之修炼Kotlin-【条件语句】、【循环控制】篇

1,614 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【空名先生】获取更多资源和交流!

👉前提

当前环境

2021年10月8日最新下载2020.3.1 Patch 2 版本

👉实践过程

😜条件语句

基本所有的编程语言都通用,这一点差别没有【if】【else】【else if】。

只不过多了一点就是可以直接将条件语句if前面赋值。前提是返回的类型一致。

var TempTwo = 10;
var TempThree = if (TempTwo == 10) {
    "返回的相等"
} else {
    "返回的不等"
}
Log.e("TAG", "芝麻粒儿输出9: $TempThree")

Kotlin中没有switch用法,而是when语法,其中else就类似switch的default,其他分支不满足走这个else,而如果是多个判断相同的处理,Java的switch中是去掉break,when是直接用逗号分割。

var TempFour = 8;
when (TempFour) {
    in 1..5 -> {
        Log.e("TAG", "芝麻粒儿输出10: 可以只用in 判断是否在一个区间内")
    }
    2,3,4->{
        Log.e("TAG", "芝麻粒儿输出10: 变量2或3或4都走这")
    }
    5 -> {
        Log.e("TAG", "芝麻粒儿输出10: 她会判断是5还是8")
    }
    8 -> {
        Log.e("TAG", "芝麻粒儿输出10: 变量是8所以走着")
    }
    else -> {
        Log.e("TAG", "芝麻粒儿输出10: 上面都不走走着,类似switch的default")
    }
    //判断的类型需要和when括号里面的一致
    //"如果是字符"->{}
}

唉,关于when的用法还有一些,感觉使用概率不大就不提了,但是这是个重点哦。题外话:整的花里胡哨的,感觉不如Java易懂。洁是洁了,但并不简单啊,还得想一会才能搞明白意思。

😜循环控制

循环是代码中用的很频繁的一种控制了,在Kotlin中循环虽然也是for关键字,但里面的自增自减有很大不同

var listThree = arrayListOf<String>()
listThree.add("这是")
listThree.add("数组")
listThree.add("List")
for (idnex in 1 until 10) {
    //这是1-10循环  等同于for (int i = 1; i < 10; i++)
}
for (idnex in 10 downTo 1) {
    //这是1-10循环  等同于for (int i = 10; i >0; i--)
}
for (idnex in 1..10) {
    //这是1-10循环  等同于for (int i = 1; i <= 10; i++)
}
for (index in 1..10 step 2) {
    //这是循环以2自增for (int i = 1; i <= 10; i+=2)
}
for (intss in listThree) {
    Log.e("TAG", "芝麻粒儿循环: $intss")
}
for (intss in listThree.indices) { //得到的是角标位置index
    Log.e("TAG", "芝麻粒儿循环: " + listThree[intss])
}

while 与 do...while 循环和Java没有什么不同。

返回和跳转

支持Java中return break continue这些。语法也没差异,但是多了个标签功能,也就是break continue可以跳转到你指定的循环,比如某个五循环的嵌套,默认break continue这些只能返回当前循环,但是用上标签她们可以任意的跳出向上的循环:比如直接跳出所有循环。

标签是以你随便起名+@符号组成的

如下:

one@ for (i in 1..100) {
    Log.e("TAG", "芝麻粒儿循环i: $i")
    two@ for (j in 1..100) {
        if (j > 2) {
            Log.e("TAG", "芝麻粒儿循环j: $j")
            //当满足j>2的时候,break因为是@one,则直接跳出这两个循环
            break@one
        }
    }
}

仅仅输出这两个:
2021-10-13 17:08:29.820 10437-10437/cn.appstudy E/TAG: 芝麻粒儿循环i: 1
2021-10-13 17:08:29.820 10437-10437/cn.appstudy E/TAG: 芝麻粒儿循环j: 3

👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

📢欢迎点赞👍收藏🌟留言📝