首页 > 其他分享 >Kotlin 控制流和数组操作详解

Kotlin 控制流和数组操作详解

时间:2024-08-07 18:06:49浏览次数:9  
标签:Kotlin 控制流 while 详解 数组 cars println 循环

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,关注后即可获取最新文章推送

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

标签:Kotlin,控制流,while,详解,数组,cars,println,循环
From: https://www.cnblogs.com/xiaowange/p/18347583

相关文章

  • 知识分享 | 详解整车区域控制器(ZCU)
    ​随着智能网联汽车技术的迅猛发展,整车区域控制器ZCU(ZoneControlUnit)作为汽车电子电气架构中的核心组件,其重要性日益凸显。ZCU不仅作为区域数据中心、IO中心及配电中心,在车辆动力、传感器管理、信息娱乐等方面发挥着关键作用,还通过高效的数据处理、信号控制及电力分配,为智能网......
  • 内存重叠以及memcpy和memmove函数详解
    内存重叠当我们进行内存拷贝(memcpy函数)时或者在自己实现内存拷贝函数strcpy时,如果存在目标地址在原地址的范围内就造成了内存重叠。一开始看到这个名词的时候,确实有点难以理解,经过学习,我利用以下的例子来说明内存重叠问题。首先,先介绍一下memcpy和memmove函数memcpy和mem......
  • C语言 操作符详解
    目录一、操作符的分类二、二进制和进制转换 2.1二进制转十进制 2.2二进制转八进制 2.3二进制转十六进制 三、原码、反码、补码四、移位操作符4.1左移操作符​编辑 4.2右移操作符五、位操作符按位与:&按位或:|按位异或:^按位取反:~六、逗号表达式七、操作......
  • 超详细明了的C语言函数递归,望周知。(包含求n的阶乘顺序打印⼀个整数的每⼀位求第n个斐
    1.递归是什么?递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。写⼀个史上最简单的C语⾔递归代码#include<stdio.h>intmain(){printf......
  • Android开发基础04-Java 和 Kotlin
    引言Java和Kotlin是两种主要用于Android开发的编程语言。理解它们的基本概念、特点、优缺点及常见用法,对Android开发者来说非常重要。1.Java基本概念Java是一种面向对象、跨平台的编程语言,于1995年由SunMicrosystems(现为Oracle)发布。它的设计理念是“WriteOnce,Ru......
  • 神经网络之卷积篇:详解边缘检测示例(Edge detection example)
    详解边缘检测示例卷积运算是卷积神经网络最基本的组成部分,使用边缘检测作为入门样例。在这个博客中,会看到卷积是如何进行运算的。在之前的博客中,说过神经网络的前几层是如何检测边缘的,然后,后面的层有可能检测到物体的部分区域,更靠后的一些层可能检测到完整的物体,这个例子中就是......
  • 4、Flink SQL 与 DataStream API 集成处理 Insert-Only 流详解
    处理Insert-Only流StreamTableEnvironment提供以下方法来从DataStream转换和转换到DataStream:fromDataStream(DataStream):将insert-only和任意类型的流转换为表,默认情况下不传播事件时间和水印。fromDataStream(DataStream,Schema):将insert-only和任意类型......
  • 深入解析:23种软件设计模式详解及其分类(创建型、结构型、行为型)附代码示例DEMO
    目录引言一、创建型模式1.简单工厂模式(SimpleFactoryPattern)2.抽象工厂模式(AbstractFactoryPattern)3.单例模式(SingletonPattern)4.建造者模式(BuilderPattern)5.原型模式(PrototypePattern)二、结构型模式1.适配器模式(AdapterPattern)2.桥接模式(BridgePatt......
  • HTTP报文:“请求报文“和“响应报文“详解
    在网络通信的世界里,HTTP协议扮演着至关重要的角色。它是客户端与服务器之间对话的语言,允许数据的请求和响应。本文将深入探讨HTTP报文的两个核心组成部分:请求报文和响应报文,揭示它们如何共同构建了网络通信的基础。......
  • 24-08-04 JavaSE java集合详解
    24-08-04JavaSE集合详解文章目录24-08-04JavaSE集合详解理解集合java集合的体系框架Collection类Collection接口的常用方法集合的遍历iterator迭代器增强for循环List类List类的常用方法List的三种遍历方法List的排序ArrayList类ArrayList类的注意事项Arraylist的......