概述
走进 Kotlin 的数组
数组在 Kotlin 中使用 Array 类来表示,它定义了 get 与 set 方法以及 size 属性,以及一些其他有用的成员方法,具体源码如下所示:
public class Array<T> {
public inline constructor(size: Int, init: (Int) -> T)
public operator fun get(index: Int): T
public operator fun set(index: Int, value: T): Unit
public val size: Int
public operator fun iterator(): Iterator<T>
}
Kotlin 数组的创建技巧
- 使用 arrayOf() 方法创建数组
我们可以使用库方法 arrayOf() 来创建一个数组并传递元素值给它,例如 arrayOf(1, 2, 3) 创建了 array [1, 2,
3]。
- 使用 arrayOfNulls() 方法创建数组
也可以使用库方法 arrayOfNulls() 创建一个指定大小的、所有元素都为空的数组。
- 创建有初始值的数组
// 创建一个 Array<String> 初始化为 ["0", "1", "4", "9", "16"]
val asc = Array(5) { i -> (i * i).toString() }
asc.forEach { println(it) }
Kotlin 不让我们把 Array 赋值给 Array,以防止可能的运行时失败。
- 原生类型数组
Kotlin 也有无装箱开销的专门的类来表示原生类型数组: IntArray、ByteArray、 ShortArray 等等。这些类与
Array 并没有继承关系,但是它们有同样的方法属性集。它们也都有相应的工厂方法:
//通过intArrayOf、floatArrayOf、doubleArrayOf等创建数组
val x: IntArray = intArrayOf(1, 2, 3)
println("x[1] + x[2] = ${x[1] + x[2]}")
// 大小为 5、值为 [0, 0, 0, 0, 0] 的整型数组
val arr = IntArray(5)
// 例如:用常量初始化数组中的值
// 大小为 5、值为 [42, 42, 42, 42, 42] 的整型数组
val arr = IntArray(5) { 42 }
// 例如:使用 lambda 表达式初始化数组中的值
// 大小为 5、值为 [0, 1, 2, 3, 4] 的整型数组(值初始化为其索引值)
var arr = IntArray(5) { it * 1 }
- Kotlin 数组的遍历技巧
1.数组遍历
for (item in array) {
println(item)
}
2.带索引遍历数组
for (i in array.indices) {
println(i.toString() + "->" + array[i])
}
3.遍历元素(带索引)
for ((index, item) in array.withIndex()) {
println("$index->$item")
}
4.forEach 遍历数组
array.forEach { println(it) }
5.forEach 增强版
array.forEachIndexed { index, item ->
println("$index:$item")
}
- 数组代码演练
fun main() {
println("---main---")
arrayType()
}
/**
* 数组
*/
fun arrayType() {
// arrayOf
val array: Array<Int> = arrayOf(1, 2, 3)
// ArrayOfNulls
val array1 = arrayOfNulls<Int>(3)
array1[0] = 4
array1[1] = 5
array1[2] = 6
// 通过Array的构造函数
val array2 = Array(5) { i -> (i * i).toString() }
// 原生类型数组
val x = intArrayOf(1, 2, 3)
println("x[0] + x[1] = ${x[0] + x[1]}")
// 大小为5、值为 [0, 0, 0, 0, 0] 的整型数组
val array3: IntArray = IntArray(5)
// 例如:用常量初始化数组中的值
// 大小为5、值为 [42, 42, 42, 42, 42] 的整型数组
val array4 = IntArray(5) { 42 }
// 例如:使用 lambda 表达式初始化数组中的值
// 大小为5、值为 [0, 1, 2, 3, 4] 的整型数组 (值初始化为其索引值)
val array5 = IntArray(5) { it * 1 }
println(array5[4])
/***遍历数组的5种方式***/
// 数组遍历
for (item in array) {
println(item)
}
// 带索引遍历数组
for (i in array.indices) {
println("$i -> ${array[i]}")
}
// 带索引遍历数组2
for ((index, item) in array.withIndex()) {
println("$index -> $item")
}
//forEach 遍历数组
array.forEach { println(it) }
//forEach 增强版
array.forEachIndexed { index, item ->
println("$index -> $item")
}
}
最后
Kotlin 是一种新型的静态类型编程语言,有超过 60% 的专业 Android 开发者在使用,它有助于提高工作效率、开发者满意度和代码安全性。不仅可以减少常见代码错误,还可以轻松集成到现有应用中。
在这里为了方便大家系统的学习Kotlin,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份Kotlin全家桶学习资料(免费领取~)。
内容概要:Kotlin 入门教程指南、高级Kotlin强化实战和史上最详Android版kotlin协程入门进阶实战 。
内容特点:条理清晰,含图像化表示更加易懂。
《Kotlin入门教程指南》
第一章 Kotlin 入门教程指南
- 前言
第二章 概述
- 使用 Kotlin 进行服务器端开发
- 使用 Kotlin 进行 Android 开发
- Kotlin JavaScript 概述
- Kotlin/Native 用于原生开发
- 用于异步编程等场景的协程
- Kotlin 1.1 的新特性
- Kotlin 1.2 的新特性
- Kotlin 1.3 的新特性
第三章 开始
- 基本语法
- 习惯用法
- 编码规范
第四章 基础
- 基本类型
- 包
- 控制流:if、when、for、while
- 返回和跳转
第五章 类与对象
- 类与继承
- 属性与字段
- 接口
- 可见性修饰符
- 扩展
- 数据类
- 密封类
- 泛型
- 嵌套类与内部类
- 枚举类
- 对象表达式与对象声明
- Inline classes
- 委托
委托属性
第六章 函数与 Lambda 表达式
- 函数
- 高阶函数与 lambda 表达式
- 内联函数
第七章 其他
- 解构声明
- 集合:List、Set、Map
- 区间
- 类型的检查与转换“is”与“as”
- This 表达式
- 相等性
- 操作符重载
- 空安全
- 异常
- 注解
- 反射
- 类型安全的构建器
- 类型别名
- 多平台程序设计
- 关键字与操作符
第八章 Java 互操作与 JavaScript
- 在 Kotlin 中调用 Java 代码
- Java 中调用 Kotlin
- JavaScript 动态类型
- Kotlin 中调用 JavaScript
- JavaScript 中调用 Kotlin
- JavaScript 模块
- JavaScript 反射
- JavaScript DCE
第九章 协程
- 协程基础
- 取消与超时
- 通道 (实验性的)
- 组合挂起函数
- 协程上下文与调度器
- 异常处理
- select 表达式(实验性的)
- 共享的可变状态与并发
第十章 工具
- 编写 Kotlin 代码文档
- Kotlin 注解处理
- 使用 Gradle
- 使用 Maven
- 使用 Ant
- Kotlin 与 OSGi
- 编译器插件
- 不同组件的稳定性
第十一章 常见问题总结
- FAQ
- 与 Java 语言比较
- 与 Scala 比较【官方已删除】
**《**高级Kotlin强化实战 》
第一章 Kotlin 入门教程
- Kotlin 概述
- Kotlin 与 Java 比较
- 巧用 Android Studio
- 认识 Kotlin 基本类型
- 走进 Kotlin 的数组
- 走进 Kotlin 的集合
- 完整代码
- 基础语法
第二章 Kotlin 实战避坑指南
- 方法入参是常量,不可修改
- 不要 Companion、INSTANCE?
- Java 重载,在 Kotlin 中怎么巧妙过渡一下?
- Kotlin 中的判空姿势
- Kotlin 复写 Java 父类中的方法
- Kotlin “狠”起来,连TODO都不放过!
- is、as` 中的坑
- Kotlin 中的 Property 的理解
- also 关键字
- takeIf 关键字
- 单例模式的写法
第三章 项目实战《Kotlin Jetpack 实战》
- 从一个膜拜大神的 Demo 开始
- Kotlin 写 Gradle 脚本是一种什么体验?
- Kotlin 编程的三重境界
- Kotlin 高阶函数
- Kotlin 泛型
- Kotlin 扩展
- Kotlin 委托
- 协程“不为人知”的调试技巧
- 图解协程:suspend
**《**史上最详Android版kotlin协程入门进阶实战 》
第一章 Kotlin协程的基础介绍
- 协程是什么
- 什么是Job 、Deferred 、协程作用域
- Kotlin协程的基础用法
第二章 kotlin协程的关键知识点初步讲解
- 协程调度器
- 协程上下文
- 协程启动模式
- 协程作用域
- 挂起函数
第三章 kotlin协程的异常处理
- 协程异常的产生流程
- 协程的异常处理
第四章 kotlin协程在Android中的基础应用
- Android使用kotlin协程
- 在Activity与Framgent中使用协程
- ViewModel中使用协程
- 其他环境下使用协程
第五章 kotlin协程的网络请求封装
- 协程的常用环境
- 协程在网络请求下的封装及使用
- 高阶函数方式
- 多状态函数返回值方式
第六章 深入kotlin协程原理(一)
- suspend的花花肠子
- 藏在身后的-Continuation
- 村里的希望-SuspendLambda
第七章 深入kotlin协程原理(二)
- 协程的那些小秘密
- 协程的创建过程
- 协程的挂起与恢复
- 协程的执行与状态机
第八章 Kotlin Jetpack 实战
- 从一个膜拜大神的 Demo 开始
- Kotlin 写 Gradle 脚本是一种什么体验?
- Kotlin 编程的三重境界
- Kotlin 高阶函数
- Kotlin 泛型
- Kotlin 扩展
- Kotlin 委托
- 协程“不为人知”的调试技巧
- 图解协程原理
第九章 Kotlin + 协程 + Retrofit + MVVM优雅的实现网络请求
- 项目配置
- 实现思路
- 协程实现
- 协程 + ViewModel + LiveData实现
- 后续优化
- 异常处理
- 更新Retrofit 2.6.0
欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取↓↓↓
最后
以上就是个性茉莉为你收集整理的怎么理解Kotlin中的数组?看完这篇必懂!《Kotlin入门教程指南》**《**高级Kotlin强化实战 》**《**史上最详Android版kotlin协程入门进阶实战 》的全部内容,希望文章能够帮你解决怎么理解Kotlin中的数组?看完这篇必懂!《Kotlin入门教程指南》**《**高级Kotlin强化实战 》**《**史上最详Android版kotlin协程入门进阶实战 》所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复