首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Kotlin 控制流和数组操作详解

编程知识
2024年08月07日 17:00

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 语句。

工作原理如下:

  1. when 变量(day)进行一次评估。
  2. day 变量的值与每个“分支”的值进行比较。
  3. 每个分支以一个值开始,后跟一个箭头(->)和一个结果。
  4. 如果匹配,则执行相关联的代码块。
  5. 使用 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 表达式以及 whiledo..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 中 breakcontinue 以及基本数组操作的详细介绍。这些功能使得控制循环流程和管理多个数据项变得更加灵活和高效。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

From:https://www.cnblogs.com/xiaowange/p/18347583
本文地址: http://www.shuzixingkong.net/article/885
0评论
提交 加载更多评论
其他文章 AI 大模型时代呼唤新一代基础设施,DataOps 2.0和调度编排愈发重要
Bessemer Venture Partners 在基础设施投资方面有着悠久的历史。经过这家公司的长期观察,他们发现在 AI 时代,为 AI 量身定制的新型基础设施范式正在兴起,以增强 AI 时代下一波企业数据软件的发展。其中,DataOps 2.0 和调度编排技术和产业的发展也成为焦点。
AI 大模型时代呼唤新一代基础设施,DataOps 2.0和调度编排愈发重要 AI 大模型时代呼唤新一代基础设施,DataOps 2.0和调度编排愈发重要 AI 大模型时代呼唤新一代基础设施,DataOps 2.0和调度编排愈发重要
EF Core连接PostgreSQL数据库
PostgreSQL数据库介绍 PostgreSQL是一个功能强大的开源对象关系型数据库管理系统(RDBMS)。最初于1986年在加州大学伯克利分校的POSTGRES项目中诞生,PostgreSQL以其稳定性、灵活性和扩展性而著称。它支持丰富的数据类型、复杂的查询、事务完整性、多版本并发控制(MVC
EF Core连接PostgreSQL数据库 EF Core连接PostgreSQL数据库 EF Core连接PostgreSQL数据库
(数据科学学习手札163)ibis:极具潜力的Python数据分析框架
本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,今天要给大家介绍的Python框架叫做ibis,没错,跟著名连锁酒店宜必思同名,其作者是创造了pandas、Arrow等著名
(数据科学学习手札163)ibis:极具潜力的Python数据分析框架 (数据科学学习手札163)ibis:极具潜力的Python数据分析框架 (数据科学学习手札163)ibis:极具潜力的Python数据分析框架
架构知识点(三)
动态分支预测是一种通过记录和分析程序运行时分支行为的历史信息来预测未来分支的机制。这种技术旨在提高处理器流水线的效率,减少分支指令引起的流水线停顿。你提到的通过查找指令地址判断分支行为的方法,就是一种动态分支预测的实现。 体现动态分支预测的几个关键点 历史信息记录: 记录分支行为:动态分支预测器会记
获取客户端真实IP
出于安全考虑,近期在处理一个记录用户真实IP的需求。本来以为很简单,后来发现没有本来以为的简单。这里主要备忘下,如果服务器处于端口回流(hairpin NAT),keepalived,nginx之后,如何取得客户端的外网IP。 来自客户端PC的流量路径如上,在这样的拓扑中,在应用服务中取得,客户端P
获取客户端真实IP 获取客户端真实IP 获取客户端真实IP
再探GraphRAG:如何提升LLM总结能力?
本文对GraphRAG的灵感来源、能力透视、应用场景都做了比较优秀的解读,同时也对图技术的应用价值做了深入探讨,相信会给大家带来不一样的收获。
再探GraphRAG:如何提升LLM总结能力? 再探GraphRAG:如何提升LLM总结能力? 再探GraphRAG:如何提升LLM总结能力?
SpringBoot项目中HTTP请求体只能读一次?试试这方案
问题描述 在基于Spring开发Java项目时,可能需要重复读取HTTP请求体中的数据,例如使用拦截器打印入参信息等,但当我们重复调用getInputStream()或者getReader()时,通常会遇到类似以下的错误信息: 大体的意思是当前request的getInputStream()已经被调
SpringBoot项目中HTTP请求体只能读一次?试试这方案 SpringBoot项目中HTTP请求体只能读一次?试试这方案 SpringBoot项目中HTTP请求体只能读一次?试试这方案
莽撞闯荡的6周年,也就是弹指一挥间
6年也就是弹指一挥间,时间过得飞快。6年前的明天,也就是2018年的8月8日,我离开了服务12年的腾讯开始探索自己的梦想-参见《回顾4180天在腾讯使用C#的历程,开启新的征途》。到今天,已经整整走过了6年,这6年还是围绕着C# 开展业务和活动。在这个6周年的特殊日子,总感觉要说些什么,但想说的话又