Kotlin条件控制及循环(1),腾讯T3大牛亲自教你

或者直接写成一行, 返回值类型可以自动推导出来,所以也可以省略:

fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

when表达式

在条件分支变得很多的时候, 使用if语句就会产生大量的冗余代码, 而且if语句也有一定的局限性,这时就需要使用when表达式了。

Kotlin中的when语句有点类似于Java中的switch语句,但它又远比switch语句强大得多。 Java中的switch语句并不怎么好用。

首先,switch只能传入整型或短于整型的变量作为条件,JDK 1.7之后增加了对字符串变量的支持,如果不是这几种类型的变量,则不能使用switch。

其次,switch中的每个case条件都要在最后主动加上一个break,否则执行完当前case之后会依次执行下面的case,这一特性可能导致许多奇怪的bug,就是因为有人忘记添加break,执行了多余的case语句。

而Kotlin中的when语句不仅解决了上述痛点,还增加了许多更为强大的新特性。when运行原理就是将它的参数依次和所有的分支条件顺序比较,直到某个分支满足条件,when语句允许传入一个任意类型的参数,可以是具体的值或某个类型;而when的分支条件语句可以是判断某个具体的值、或着是判断是否为某个类型、或者是判断是否在某个区间。当所有分支语句都不满足时,可以使用一个else语句执行匹配失败的流程,类似于Java的switch中的default语句。

下面是一个完整的示例:

when (x) {

1 -> print(“x == 1”)

2 -> print(“x == 2”)

is String -> print(“x是一个string”)

in 1…4 -> print(“在1到4之间”)

else -> {

print(“x 不是 1 ,也不是 2”)

}

}

when语句的基本用法就是这些,但其实when语句还有一种不带参数的用法,虽然这种用法可能不太常用,但有的时候却能发挥很强的扩展性。这种用法是将判断的表达式完整地写在when的结构体当中。如下所示:

when {

x == 1 -> print(“x == 1”)

x == 2 -> print(“x == 2”)

x is String -> print(“x是一个string”)

x in 1…4 -> print(“在1到4之间”)

else -> {

print(“x 不是 1 ,也不是 2”)

}

}

循环控制

Java中主要有两种循环语句:while循环和for循环。而Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别,而Kotlin在for循环方面做了很大幅度的修改,Java中最常用的for-i循环在Kotlin中直接被舍弃了,而Java中另一种for-each循环则被Kotlin进行了大幅度的加强,变成了for-in循环,在了解for-in循环之前,需要先了解一下kotlin区间的概念。

区间

kotlin中可以使用..untildownTo表示一个区间范围, ..until是从小到大,downTo是从大到小。

.. 表示两个端点都在区间的升序闭区间,如:

val range = 0…5

range的取值范围为: 0 1 2 3 4 5.

until 表示左闭右开升序区间,如:

val range = 0 until 5

range的取值范围为: 0 1 2 3 4.

downTo 表示两个端点都在区间的降序闭区间,如:

val range = 0 downTo 5

range的取值范围为: 5 4 3 2 1 0.

for-in循环

默认情况下,for-in循环每次执行循环时会在区间范围内递增1或递减1,相当于Java for-i循环中的i++或i–效果,而如果要跳过其中的一些元素,可以使用step关键字:step表示步长,默认step为1,现在给step设置为2,如下示例

for (i in 1…6 step 2) {

}

i的取值范围为: 1 3 5.

for-in循环除了可以对区间进行遍历之外,还可以用于遍历数组和集合,下面是一些for-in循环示例:

val items = listOf(“实”, “力”, “K”, “O”)

//实力KO

for (item in items) {

print(items.get(item))

}

//实力KO

for (index in items.indices) {

print(items.get(index))

}

//实力KO

for ((index, value) in items.withIndex()) {

print(value)

}

//实力KO

items.forEach {

print(it)

}

while循环

while循环和Java中的while循环一样, 语法如下:

while (条件) {

执行逻辑

}

当满足条件时就会执行结构体中的逻辑,然后再次执行判断条件,直到不满足条件才结束while循环,如下示例:

val items = listOf(“实”, “力”, “K”, “O”)

var index = 0

while (index < items.size) {

print(items.get(index))

index++

}

//当index小于items的size时, 执行index++,一直到index=items.size时结束

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力)

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

加油,共勉。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

加油,共勉。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值