Kotlin 極簡小抄 P9 - 數組(數組的創建、數組元素的訪問與修改、數組遍歷、數組操作、多維數組、數組與可變參數)

Kotlin 概述

  1. Kotlin 由 JetBrains 開發,是一種在 JVM(Java 虛擬機)上運行的靜態類型編程語言

  2. Kotlin 旨在提高開發者的編碼效率和安全性,同時保持與 Java 的高度互操作性

  3. Kotlin 是 Android 應用開發的首選語言,也可以與 Java 一樣用于服務器端開發


一、數組的創建

1、基本類型數組創建
  1. 使用工廠函數創建
val byteArray: ByteArray = byteArrayOf(1, 2, 3)
val shortArray: ShortArray = shortArrayOf(1, 2, 3)
val intArray: IntArray = intArrayOf(1, 2, 3)
val longArray: LongArray = longArrayOf(1L, 2L, 3L)val floatArray: FloatArray = floatArrayOf(1f, 2f, 3f)
val doubleArray: DoubleArray = doubleArrayOf(1.0, 2.0, 3.0)val charArray: CharArray = charArrayOf('a', 'b', 'c')val booleanArray: BooleanArray = booleanArrayOf(true, false, true)
// 使用工廠函數創建空數組val intArr1 = emptyArray<Int>()
// 創建指定大小的數組(元素初始化為 null)val intArr2 = arrayOfNulls<Int>(5)
  1. 使用構造函數創建
// 創建大小為 10 的數組,初始化為 0
val intArray1: IntArray = IntArray(10)
// 創建大小為 10 的數組,使用 lambda 表達式初始化
val intArray2: IntArray = IntArray(10) {it * 2
}
2、非基本類型數組創建
  1. 使用工廠函數創建
val stringArray: Array<String> = arrayOf("a", "b", "c")
// 使用工廠函數創建空數組val stringArr1 = emptyArray<String>()
// 創建指定大小的數組(元素初始化為 null)val stringArr2 = arrayOfNulls<String>(5)
  1. 使用構造函數創建
// 創建大小為 10 的數組,使用 lambda 表達式初始化val stringArray: Array<String> = Array(10) {"Hello, $it"
}

二、數組元素的訪問與修改

  1. 使用方括號訪問與修改
val intArray: IntArray = intArrayOf(1, 2, 3)println(intArray[0])intArray[0] = 10println(intArray[0])
# 輸出結果1
10
  1. 使用 set 方法訪問與修改
val intArray: IntArray = intArrayOf(1, 2, 3)println(intArray[0])intArray.set(0, 10)println(intArray[0])
# 輸出結果1
10

三、數組遍歷

  1. 使用 for 循環遍歷
val numbers: IntArray = intArrayOf(1, 2, 3)for (number in numbers) {println(number)
}
# 輸出結果1
2
3
  1. 使用索引遍歷
val numbers: IntArray = intArrayOf(1, 2, 3)for (i in numbers.indices) {println(numbers[i])
}
# 輸出結果1
2
3
  1. 使用 withIndex 遍歷
val numbers: IntArray = intArrayOf(1, 2, 3)for ((index, value) in numbers.withIndex()) {println("$index: $value")
}
# 輸出結果0: 1
1: 2
2: 3
  1. 使用 forEach 遍歷
val numbers: IntArray = intArrayOf(1, 2, 3)numbers.forEach { println(it) }
# 輸出結果1
2
3
  1. 使用 forEachIndexed 遍歷
val numbers: IntArray = intArrayOf(1, 2, 3)numbers.forEachIndexed { index, value ->println("$index: $value")
}
# 輸出結果0: 1
1: 2
2: 3

四、數組操作

  1. 數組轉換為 List
val numbers = intArrayOf(1, 2, 3, 4, 5)val list = numbers.toList()println(list)
# 輸出結果[1, 2, 3, 4, 5]
  1. 數組切片
val numbers = intArrayOf(1, 2, 3, 4, 5)val slice = numbers.sliceArray(1..3)println(slice.contentToString())
# 輸出結果[2, 3, 4]
  1. 數組過濾
val numbers = intArrayOf(1, 2, 3, 4, 5)val evens = numbers.filter { it % 2 == 0 }.toIntArray()println(evens.contentToString())
# 輸出結果[2, 4]
  1. 數組映射
val numbers = intArrayOf(1, 2, 3, 4, 5)val squares = numbers.map { it * it }.toIntArray()println(squares.contentToString())
# 輸出結果[1, 4, 9, 16, 25]
  1. 數組排序
val numbers = intArrayOf(3, 4, 5, 1, 2)// 升序
val sorted = numbers.sortedArray()println(sorted.contentToString())// 降序
val sortedDesc = numbers.sortedArrayDescending()println(sortedDesc.contentToString())
# 輸出結果[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
  1. 數組查找
val numbers = intArrayOf(1, 2, 3, 4, 5)val firstEven = numbers.find { it % 2 == 0 }println(firstEven)val anyGreaterThan10 = numbers.any { it > 10 }println(anyGreaterThan10)
# 輸出結果2
false

五、多維數組

  1. 創建二維數組
// 3 * 3 的二維數組,初始化為 0
val matrix = Array(3) { IntArray(3) }
  1. 初始化二維數組
val matrix = arrayOf(intArrayOf(1, 2, 3),intArrayOf(4, 5, 6),intArrayOf(7, 8, 9)
)println(matrix[1][0])
println(matrix[1][1])
println(matrix[1][2])
# 輸出結果4
5
6

六、數組與可變參數

  • 使用 vararg 關鍵字表示可變參數,本質上就是數組
fun printAll(vararg messages: String) {for (m in messages) println(m)
}
printAll("Hello", "World", "Kotlin")val array = arrayOf("a", "b", "c")
printAll(*array)
# 輸出結果Hello
World
Kotlin
a
b
c

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906546.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906546.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906546.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

gitlab+portainer 實現Ruoyi Vue前端CI/CD

1. 場景 最近整了一個Ruoyi Vue 項目&#xff0c;需要實現CICD&#xff0c;經過一番坎坷&#xff0c;最終達成&#xff0c;現將技術要點和踩坑呈現。 具體操作流程和后端大同小異&#xff0c;后端操作參考連接如下&#xff1a; https://blog.csdn.net/leinminna/article/detai…

RNN神經網絡

RNN神經網絡 1-核心知識 1-解釋RNN神經網絡2-RNN和傳統的神經網絡有什么區別&#xff1f;3-RNN和LSTM有什么區別&#xff1f;4-transformer的歸一化有哪幾種實現方式 2-知識問答 1-解釋RNN神經網絡 Why&#xff1a;與我何干&#xff1f; 在我們的生活中&#xff0c;很多事情…

javaweb-html

1.交互流程&#xff1a; 瀏覽器向服務器發送http請求&#xff0c;服務器對瀏覽器進行回應&#xff0c;并發送字符串&#xff0c;瀏覽器能對這些字符串&#xff08;html代碼&#xff09;進行解釋&#xff1b; 三大web語言&#xff1a;&#xff08;1&#xff09;html&#xff1a…

從混亂到高效:我們是如何重構 iOS 上架流程的(含 Appuploader實踐)

從混亂到高效&#xff1a;我們是如何重構 iOS 上架流程的 在開發團隊中&#xff0c;有一類看不見卻至關重要的問題&#xff1a;環境依賴。 特別是 iOS App 的發布流程&#xff0c;往往牢牢綁死在一臺特定的 Mac 上。每次需要發版本&#xff0c;都要找到“那臺 Mac”&#xff…

FPGA:CLB資源以及Verilog編碼面積優化技巧

本文將先介紹Kintex-7系列器件的CLB&#xff08;可配置邏輯塊&#xff09;資源&#xff0c;然后分享在Verilog編碼時節省CLB資源的技巧。以下內容基于Kintex-7系列的架構特點&#xff0c;并結合實際設計經驗進行闡述。 一、Kintex-7系列器件的CLB資源介紹 Kintex-7系列是Xilin…

在linux里上傳本地項目到github中

首先先安裝git&#xff0c;安裝完git后&#xff0c;輸入如下操作指令&#xff1a; 輸入自己的用戶名和郵箱&#xff08;為注冊GITHUB賬號時的用戶名和郵箱&#xff09;&#xff1a; git config --global user.name "111"git config --global user.email "121…

鴻蒙Flutter實戰:25-混合開發詳解-5-跳轉Flutter頁面

概述 在上一章中&#xff0c;我們介紹了如何初始化 Flutter 引擎&#xff0c;本文重點介紹如何添加并跳轉至 Flutter 頁面。 跳轉原理 跳轉原理如下&#xff1a; 本質上是從一個原生頁面A 跳轉至另一個原生頁面 B&#xff0c;不過區別在于&#xff0c;頁面 B是一個頁面容器…

c語言 寫一個五子棋

c語言 IsWin判贏 display 畫 10 x 10 的棋盤 判斷落子的坐標是否已有棋子 判斷落子坐標范圍是否超出范圍 // 五子棋 #include <stdio.h> #include <stdlib.h>// 畫棋盤 10 x 10的棋盤&#xff0c;len為行數 void display(char map[][10], int len) {system(&q…

格雷希爾快速封堵接頭,解決新能源汽車的氣密性檢測和三電系統的綜合測試

我國的新能源汽車已經遙遙領先&#xff0c;讓其他國家望塵莫及。格雷希爾GripSeal&#xff0c;為新能源汽車制造業提供快速可靠的密封連接器&#xff0c;讓測試速度加倍。以好抓取、易密封為設計理念&#xff0c;實現一秒連接&#xff0c;瞬時密封的高效性能。通過持續的產品設…

人工智能全景解析:從技術原理到未來趨勢的深度探索

人工智能(AI)作為21世紀最具變革性的技術之一&#xff0c;正以前所未有的速度重塑著人類社會。從智能手機中的語音助手到工廠里的智能機器人&#xff0c;從醫療診斷系統到金融風控模型&#xff0c;AI技術已滲透到我們生活和工作的方方面面。本文將全面解析人工智能的發展歷程、…

[密碼學實戰]使用C語言實現TCP服務端(二十九)

[密碼學實戰]使用C語言實現TCP服務端(二十九) 引言 TCP(傳輸控制協議)是互聯網通信中最核心的協議之一,它提供可靠的、面向連接的數據傳輸服務。通過C語言的標準Socket API,開發者可以靈活地實現TCP客戶端和服務端程序。本文將詳細講解TCP通信的原理,并提供完整的代碼…

IPv4 地址嵌入 IPv6 的前綴轉換方式詳解

1. 概述 在 IPv4 和 IPv6 網絡共存的過渡期&#xff0c;NAT64&#xff08;Network Address Translation 64&#xff09;是一種關鍵技術&#xff0c;用于實現 IPv6-only 網絡與 IPv4-only 網絡的互操作。NAT64 前綴轉換通過將 IPv4 地址嵌入到 IPv6 地址中&#xff0c;允許 IPv…

動態神經網絡(Dynamic NN)在邊緣設備的算力分配策略:MoE架構實戰分析

一、邊緣計算場景的算力困境 在NVIDIA Jetson Orin NX&#xff08;64TOPS INT8&#xff09;平臺上部署視頻分析任務時&#xff0c;開發者面臨三重挑戰&#xff1a; 動態負載波動 視頻流分辨率從480p到4K實時變化&#xff0c;幀率波動范圍20-60FPS 能效約束 設備功耗需控制在1…

算法優選系列(9.BFS 解決拓撲排序)

目錄 拓撲排序簡介&#xff1a; ?編輯 課程表&#xff08;medium&#xff09;&#xff1a; 課程表II&#xff08;medium&#xff09;: 火星詞典&#xff08;hard&#xff09;&#xff1a; 拓撲排序簡介&#xff1a; 有向無環圖&#xff08;DAG圖&#xff09; 如上圖每條邊…

SpringBoot3+Vue3(1)-后端 請求頭校驗,jwt退出登錄,mybaits實現數據庫用戶校驗

1.后端&#xff1a;jwt請求頭校驗 解析 工具類jwtUtils 解析token 令牌是否過期&#xff0c;驗證 正常、異常、運行時錯誤 倒入工具類是resource 工具類中添加解析用戶的方法&#xff1a; 在 在工具類添加id解析 此處調用 添加controller做測試 測試&…

【免殺】C2免殺技術(八)APC注入

本文主要寫點自己的理解&#xff0c;如有問題&#xff0c;請諸位指出&#xff01; 概念和流程 “APC注入”&#xff08;APC Injection&#xff09;是免殺與惡意代碼注入技術中的一種典型方法&#xff0c;主要用于在目標進程中遠程執行代碼&#xff0c;常見于后門、遠控、植入型…

git工具使用

安裝Git 在開始使用Git之前&#xff0c;需要在本地計算機上安裝Git工具。Git支持Windows、macOS和Linux系統。可以從Git官方網站下載適合操作系統的安裝包&#xff0c;并按照安裝向導進行安裝。 bash復制插入 # 在Linux上安裝Git sudo apt-get install git# 在macOS上安裝Git…

SpringBoot微服務編寫Dockerfile流程及問題匯總

背景 跟 Docker 磕了兩天&#xff0c;將一個包含 N 個微服務的應用部署包改造&#xff0c;使其能夠生成 Docker 鏡像&#xff0c;并在 Docker 容器中運行。幾年前玩過 Docker&#xff0c;隱約記得幾個命令「Dockerfile 命令&#xff1a;黑卡飲料、山楂果費、哦SUV&#xff0c;…

pytorch語法學習

啟動 python main.py --config llve.yml --path_y test -i output

基于LiveData和ViewModel的路線管理實現(帶PopupWindow刪除功能)

包含RecyclerView綁定、PopupWindow刪除功能和SharedPreferences持久化存儲。 1. RouteInfo類(實現Parcelable接口) java 復制 下載 import android.os.Parcel; import android.os.Parcelable;public class RouteInfo implements Parcelable {private Integer routeID;p…