日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kotlin学习-基础知识点

發(fā)布時間:2025/7/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kotlin学习-基础知识点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一:基礎(chǔ)要點

//常量定義 val
val arg_a1: Int = 1 ?
//變量定義var
var arg_a2 = 5? // 系統(tǒng)自動推斷變量類型為Int

備注:kotlin 定義變量必須給定初始值,如延遲初始值,需要特殊聲明!

空對象處理
//可null對象聲明

//類型后面加?表示可為空var agrs_t: String? = null //拋出空指針異常val v1 = agrs_t!!.toInt() //不做處理返回 null //the safe call operator, written ?.val v2 = agrs_t?.toLong() //age為空時返回-1, 非空正常執(zhí)行val v3 = agrs_t?.toInt() ?: -1

?

//顯示判斷處理val l: Int = if (b != null) b.length else -1val b: String? = "Kotlin"if (b != null && b.length > 0) {print("String of length ${b.length}")} else {print("Empty string")}//安全處理符處理 //the safe call operator, written ?.val lt = b?.length ?: -1//為空為-1val files = File("Test").listFiles()println(files?.size ?:"empty")

?

?

類型判斷及轉(zhuǎn)化

//類型判斷,如果為String類型,則自動轉(zhuǎn)為String
if (obj is String) {
??? print(obj.length)
}
// 非此類型判斷,same as !(obj is String)
if (obj !is String) {
??? print("Not a String")
}

//可null類型轉(zhuǎn)化
val x: String? = y as String?
//非null轉(zhuǎn)化
//null cannot be cast to String as this type is not nullable,
val x2: String = y as String

?

equels與引用比較:

兩個對象內(nèi)容比較(Java中的equels)==兩個等號代表

兩個引用比較使用===三個等號代表

Equality checks: a == b??? ,!==
Referential equality: a === b

?

this關(guān)鍵字引用含義

class A { // implicit label @Ainner class B { // implicit label @Bfun Int.foo() { // implicit label @fooval a = this@A // A's thisval b = this@B // B's thisval c = this // foo()'s receiver, an Intval c1 = this@foo // foo()'s receiver, an Intval funLit = lambda@ fun String.() {val d = this // funLit's receiver}val funLit2 = { s: String ->// foo()'s receiver, since enclosing lambda expression// doesn't have any receiverval d1 = this}}} }

?說明:

1,this默認(rèn)不加標(biāo)簽,如在類的成員內(nèi),標(biāo)識當(dāng)前類對象,在成員函數(shù)或擴(kuò)展函數(shù)內(nèi)部則this代表的是接受者類型對象(如變量c,c1代表作用對象Int)

2,this加上@對應(yīng)類名稱代表指定類對象引用,如a,b

?

?

函數(shù)定義

//返回值函數(shù)
fun sum(a: Int, b: Int): Int {
??? return a+b
}

//無返回值
fun getHello(){
??????? //......
?}

//不定參數(shù)定義函數(shù)
fun varsFor(vararg v:Int){//變長參數(shù) vararg
??? for(vt in v){
??????? print(vt)
??? }
}

?//函數(shù)返回可null類型
fun getStringLength(obj: Any): Int? {
??? // `obj` 的類型會被自動轉(zhuǎn)換為 `String`
??? if (obj is String && obj.length > 0)
??????? return obj.length
??? return null // 這里的obj仍然是Any類型
}

?

//函數(shù)作為參數(shù)傳遞

fun testHandleMethodParams(){val strSample = "handle filter"val tvalue = transformResult (strSample){//函數(shù)作為參數(shù)getParams(strSample)}}fun getParams(str1: String): Int = str1.length/*** arg0 為實參* p1 為形參,內(nèi)部無法引用* ->函數(shù)返回值*/fun <T, R> transformResult(args:T,transform: (T) -> R): R {return transform(args)}

?

/*** 此方法接收一個無參數(shù)的函數(shù)并且無返回,Unit表示無返回*/private fun getResults(method: () -> Unit) {method()}

?

?

數(shù)組類型
//默認(rèn)值初始化 [1,2,3]
?val a = arrayOf(1, 2, 3)
//表達(dá)式初始化
?val b = Array(3, { i -> (i * 2) })
//指定元素個數(shù),空元素數(shù)組初始化
?var attr = arrayOfNulls<String>(5)
?attr[1] = "11"
?attr[2] = "22"

數(shù)組遍歷
fun vForArray(array: Array<Int>){
??? //withIndex 函數(shù) index value 一對同時遍歷
??? for ((index, value) in array.withIndex()) {
??????? println("the element at $index is $value")
??? }
??? //索引遍歷
??? for (i in array.indices) {
??????? print(array[i])
??? }
??? //值遍歷
??? for(v in array){
??????? print("$v \t")
??? }
}

?

集合類型 分為可變和不可變集合
1,集合類型包含三種類型:它們分別是:List、Set、Map
2,三種集合類型分別對應(yīng)MutableList<E>、MutableSet<E>、MutableMap<K,V>接口

??? //List 創(chuàng)建
??? val list1 = listOf(1,2,"3",true) // 不定類型創(chuàng)建
??? val list2 = listOf<String>("1","2","3")? // 確定元素類型
??? val list3 = listOf(a)// 使用數(shù)組創(chuàng)建
??? //備注:List一旦創(chuàng)建不可修改,add set remove不可操作
?? ?
??? //mutableList 創(chuàng)建
??? val mutaList1 = mutableListOf<String>("1","2","3")
??? val mutaList2 = mutableListOf(a)
??? mutaList1.add("11")
??? mutaList1.removeAt(2)
??? mutaList1.set(0,"mm")

?

集合常用函數(shù)

?

fun listOperate(){val items = listOf(1, 2, 3, 4)items.first() //== 1items.last() //== 4val subItems = items.filter { it % 2 == 0 } // returns [2, 4]var sub2 = items.slice(1..3)var sub3 =items.filterNot { it>100 }//高階函數(shù)//遍歷listitems.forEach{ // it= it*2+1print(it)}items.forEachIndexed { index, value -> if (value > 8) println("value of index $index is $value") }//T->R 集合中的元素通過某個方法轉(zhuǎn)換后的結(jié)果存到一個集合val list11 = items.map { (it - 2+1).toLong() }val list111 = items.mapIndexed { index, it -> if(index>5) 10 * it }//合并兩個集合 // items.flatMap { listOf(it, it + 1) }// map:遍歷每一個元素 // flatMap:遍歷每一個元素,并鋪平(展開內(nèi)部嵌套結(jié)構(gòu))元素var list_map = listOf(listOf(10,20),listOf(30,40),listOf(50,60))var mapList = list_map.map{ element -> element.toString() }var flatMapList = list_map.flatMap{ element -> element.asIterable() } // map [[10, 20], [30, 40], [50, 60]] // flatmap [10, 20, 30, 40, 50, 60]// filter all 符合條件elementval list12 = items.filter { mypre(it) }//filter 到第一個不符合條件元素返回,后面不再過濾val list13 = items.takeWhile { (it%2!=0) }//提取前3個元素val list14 = items.take(3)//提取后3個val list15 = items.takeLast(3)//去除重復(fù)元素var list16 = items.distinct()//指定key過濾條件var list17 = items.distinctBy { it*101+100 } // list1.fold(5,operation = )//匹配交集元素var list18 = items.intersect(listOf<Int>(2,3,4))//匹配兩個集合內(nèi)所以不同元素,差集合var list19 = items.union(listOf<Int>(2,3,4))//返回匹配條件元素var list21 = items.any { (it in 10..20) }var list22 = items.count { it >20 }//初始值,累計計算處理var list23 = items.fold(10) { total, next -> total + next }var list24 =items.reduce { total, next -> total - next }var sumFilterResult : Int = 0items.filter { it < 7 }.forEach { sumFilterResult += it }val rwList = mutableListOf(1, 2, 3)// 去除null元素rwList.requireNoNulls() //returns [1, 2, 3]//檢測list內(nèi)有符合條件元素if (rwList.none { it > 6 }) println("No items above 6") // prints "No items above 6"//第一個元素,或為空對象val item = rwList.firstOrNull()}
fun mypre(t:Int): Boolean{
??? return t%2==0
}

?

轉(zhuǎn)載于:https://www.cnblogs.com/happyxiaoyu02/p/9953689.html

總結(jié)

以上是生活随笔為你收集整理的Kotlin学习-基础知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。