Kotlin 控制流和数组操作详解
Kotlin when
与编写许多 if..else 表达式相比,您可以使用 when 表达式,它更易读。
它用于选择要执行的多个代码块中的一个:
示例
使用星期几的编号来计算星期几的名称:
val day = 4
val result = when (day) {
1 -> "Monday"
2 -> "Tuesday"
3 -> "Wednesday"
4 -> "Thursday"
5 -> "Friday"
6 -> "Saturday"
7 -> "Sunday"
else -> "Invalid day."
}
println(result)
// 输出 "Thursday" (day为4)
when 表达式类似于 Java 中的 switch 语句。
工作原理如下:
- 对
when变量(day)进行一次评估。 - 将
day变量的值与每个“分支”的值进行比较。 - 每个分支以一个值开始,后跟一个箭头(
->)和一个结果。 - 如果匹配,则执行相关联的代码块。
- 使用
else指定如果没有匹配要运行的代码。
在上面的示例中,day 的值为 4,因此将打印 "Thursday"。
Kotlin While 循环
循环可以在达到指定条件时执行一段代码块。循环非常方便,因为它们节省时间,减少错误,并使代码更易读。
Kotlin while 循环
while 循环通过条件为 true 时循环执行一段代码块:
语法
while (condition) {
// 要执行的代码块
}
在下面的示例中,只要计数器变量 i 小于 5,循环中的代码将一遍又一遍地运行:
示例
var i = 0
while (i < 5) {
println(i)
i++
}
注意:不要忘记增加条件中使用的变量,否则循环将永远不会结束。
Kotlin do..while 循环
do..while 循环是 while 循环的变体。这个循环会在检查条件是否为 true 之前执行一次代码块,然后只要条件为 true,它就会重复执行循环。
语法
do {
// 要执行的代码块
} while (condition);
下面的示例使用了 do/while 循环。即使条件为 false,该循环也会至少执行一次,因为在测试条件之前会执行代码块:
示例
var i = 0
do {
println(i)
i++
} while (i < 5)
以上是关于 Kotlin 中 when 表达式以及 while 和 do..while 循环的详细介绍。这些功能使得编写和理解条件和循环更加简单和直观。
Kotlin Break and Continue
Kotlin Break
break语句用于跳出循环。
在以下示例中,当 i 等于 4 时跳出循环:
var i = 0
while (i < 10) {
println(i)
i++
if (i == 4) {
break
}
}
Kotlin Continue
continue语句用于在循环中的某一次迭代中跳过特定条件的代码,并继续执行下一次迭代。
在以下示例中,跳过值为 4 的情况:
var i = 0
while (i < 10) {
if (i == 4) {
i++
continue
}
println(i)
i++
}
Kotlin Arrays
Kotlin 数组
数组用于在单个变量中存储多个值,而不是为每个值创建单独的变量。
要创建一个数组,请使用 arrayOf() 函数,并在其中放置逗号分隔的值列表:
val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
访问数组元素
您可以通过引用索引号(在方括号内)来访问数组元素。
在这个例子中,我们访问 cars 数组中第一个元素的值:
val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
println(cars[0])
// 输出 Volvo
注意:数组索引从 0 开始:[0] 是第一个元素,[1] 是第二个元素,依此类推。
修改数组元素
要更改特定元素的值,请引用索引号:
cars[0] = "Opel"
例如:
val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
cars[0] = "Opel"
println(cars[0])
// 现在输出 Opel 而不是 Volvo
数组长度 / 大小
要查找数组中有多少个元素,请使用 size 属性:
val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
println(cars.size)
// 输出 4
检查元素是否存在
您可以使用 in 运算符来检查数组中是否存在元素:
val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
if ("Volvo" in cars) {
println("存在!")
} else {
println("不存在。")
}
遍历数组
通常在处理数组时,您需要遍历所有元素。
您可以使用 for 循环遍历数组元素,关于这一点,您将在下一章学习更多。
以下示例输出 cars 数组中的所有元素:
val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
for (x in cars) {
println(x)
}
以上是关于 Kotlin 中 break、continue 以及基本数组操作的详细介绍。这些功能使得控制循环流程和管理多个数据项变得更加灵活和高效。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
Kotlin 控制流和数组操作详解的更多相关文章
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- VC++常用数据类型及其操作详解
原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...
- js数组方法详解
Array对象的方法-25个 /*js数组方法详解 */ /* * 1 concat() 用于连接多个数组或者值-------------- * 2 copyWithin() 方法用于从数组的指定位置 ...
- JavaScript数组方法详解
JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...
- memcached 命令操作详解
memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...
- windows phone 8.1开发SQlite数据库操作详解
原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...
- MySQL 操作详解
MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...
随机推荐
- java堆和栈有哪些区别
java堆和栈有哪些区别 Java堆和栈是Java虚拟机(JVM)中的两个重要概念,它们在内存管理.存储对象和执行线程等方面有明显的区别. 1.内存分配和管理Java堆是动态分配的内存区域,主要用来存 ...
- P6623 [省选联考 2020 A 卷] 树
day2t2但难度不大,和AGC044C解法类似 题目大意: 给定一棵 \(n\) 个结点的有根树 \(T\),结点从 \(1\) 开始编号,根结点为 \(1\) 号结点,每个结点有一个正整数权值 \ ...
- 在Linux驱动中使用regmap
背景 在学习SPI的时候,看到了某个rtc驱动中用到了regmap,在学习了对应的原理以后,也记录一下如何使用. 介绍 在Linu 3.1开始,Linux引入了regmap来统一管理内核的I2C, S ...
- C语言自动编译执行脚本
C语言自动编译执行脚本 在Linux上面用命令行写一些简单的C语言程序,总是遇到一个问题,代码写完后要先编译后运行,而且编译生成的可执行文件默认还是a.out,自己去加参数去改有觉得十分麻烦,所以干脆 ...
- 算法金 | 致敬深度学习三巨头:不愧是腾讯,LeNet问的巨细。。。
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 读者参加面试,竟然在 LeNet 这个基础算法上被吊打~ LeNe ...
- CentOS7源码安装Python3
一.先安装python3所依赖的软件包,非常重要(否则可能会出现python3安装成功,却缺少相应的pip) [root@centos src]# yum groupinstall "Dev ...
- 粗枝大叶记录一下java9模块化改造一个项目的过程(Jigsaw)
假设项目结构如下: 其中的依赖关系为 我实际用的jdk是17 1. common模块创建描述文件,在common的src/main/java下创建module-info.java, 内容默认 /** ...
- springboot实现登录demo
实现简单的登录功能 实体类 定义实体类为User3类. 使用@Data:提供类的get,set,equals,hashCode,canEqual,toString方法: 使用@AllArgsConst ...
- TIOBE 7月编程排行榜出炉!Python再次出圈
又到了周三,本周有过半了,大家好呀 ~~ 每月的TIOBE编程排行榜都是技术社区关注的焦点,作为编程语言流行度的晴雨表,它反映了行业趋势和 技术走向.2024年7月的榜单揭晓了一个重要变化:Pytho ...
- Solo 开发者周刊 (第 1 期):开源产品的探索之路
产品推荐 如何着手将一个简单的想法转变为一个成熟的开源项目,以及如何在此过程中利用和贡献于开源社区.同时使其达到商业化的同时,保持原有的开源精神.这些是我们需要探索的. Spug 开源运维平台 Spu ...