程序的执行语句主要分为3种:顺序语句、条件语句和循环语句。顺序语句很好理解,就是代码一行一行地往下执行就可以了,但是这种执行方式在很多情况下并不能满足我们的编程需求,这时就需要引入条件语句和循环语句了。
条件控制
if条件语句
Kotlin中的条件语句主要有两种实现方式:if和when。
一个 if 语句包含一个布尔表达式和一条或多条语句。
fun largerNumber(num1: Int, num2: Int): Int {
var value = 0
if (num1 > num2) {
value = num1
} else {
value = num2
}
return value
}
从上面的示例中可以看出Kotlin中的if用法和Java中基本上是一样的。但是Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。因此,上述代码就可以简化成如下形式:
fun largerNumber(num1: Int, num2: Int): Int {
val value = if (num1 > num2) {
num1
} else {
num2
}
return value
}
由于没有重新赋值的情况了,因此可以使用val关键字来声明value变量,最
终将value变量返回。而且value其实也是一个多余的变量,我们可以直接将if语句返回,这样代码将会变得更加精简,如下所示:
fun largerNumber(num1: Int, num2: Int): Int {
return if (num1 > num2) {
num1
} else {
num2
}
}
或者直接写成一行, 返回值类型可以自动推导出来,所以也可以省略:
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中可以使用..
、until
、 downTo
表示一个区间范围, ..
和until
是从小到大,downTo
是从大到小。
..
表示两个端点都在区间的升序闭区间,如:
val range = 0…5
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
推荐学习资料
-
Android进阶学习全套手册
-
Android对标阿里P7学习视频
-
BAT TMD大厂Android高频面试题
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-u8aZUxak-1712653919531)]
- BAT TMD大厂Android高频面试题
[外链图片转存中…(img-ilp6FApE-1712653919531)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-D0FLYbfb-1712653919531)]