1. 程式人生 > >Kotlin基礎

Kotlin基礎

ring count ber list 進行 增強 when 花括號 小寫

1.函數也是對象,可以作為參數和返回值

2.使用駝峰命名,盡量避免下劃線

3.public函數應當有說明文檔

4.lambda中花括號內前後都應該有空格

5.空值安全檢查 var s: String? = null;當一個變量允許為空值時,必須使用?來聲明

6.當?:左邊表達式不為空時,返回表達式的值,否則執行?:右邊表達式的值

7.as? 安全類型轉換,轉換失敗會返回null

8.lambda表達式相當於一個函數 fun add(x :Int,y :Int) : Int = x + y

  lambda可寫成 val add(Int , Int) -> Int = { x , y -> x + y }

9.沒有返回值的函數,顯式指定Unit為返回值

10.is運算符來檢查數據類型和類型轉換

11.in操作符檢查一個數是否在某個範圍內

12.vararg 可變參數

13.$字符串模版

14.位運算符: or 或 / and 與 / shl有符號左移 / shr 有符號右移 / ushr 無符號右移 / xor 按位異或 / inv 按位取反

15.downTo 遞減,循環可用,每次減1

16.step 步長 ,循環時可用,設置每次循環的增加或減少的量

17.when kotlin中增強版的switch,可以匹配值,範圍,類型與參數

18.數據類型

    Double 64

    Float  32

    Long  64

    Int   32

    Short  16

    byte   8

  ①沒有自動向上轉型

  ②Long類型結尾必須是大寫的L,不能為小寫

  ③字符Char不是Number,用單引號來聲明

  ④Boolean的值為true或false

  ⑤Kotlin不支持8進制, 十六進制0x開頭,二進制0b開頭

  ⑥位運算符

19.數組

  Kotlin中使用Array類表示數組,需要註意一點:[]訪問數組元素在這裏實際上是進行了操作符的

  創建數組:定長數組 val fixedSizeArray = arrayOfNulls<Int>(10)

       空數組 val empty = emptyArray<Int>()

       裝箱操作 val arr = arrayOf(1,2,3) //還有其他比如 IntArrayOf,BooleanArrayOf

       閉包初始化

  訪問數組:使用[]

  遍歷數組:for(i in array) print(i)

  根據下標遍歷:for(i in array.indices) print(array[i]) //indices 代表下標 !範圍(0<=indices <數組size)

20.流程控制

  Kotlin中的if-else: val min = if(a<b) a else b

          val min = if(a<b) "a比較大“ else b

          val min = if(a<b) "a比較大“ else Unit

  在if語句塊的最後可以自動返回最後一行表達式的值,而不需要寫return

21.異常

  Kotlin沒有檢驗異常,它的throw和try都是表達式,意味著它們可以賦值給某個變量,這點在處理邊界問題的時候很有用。

22.集合

  跟據是否可變分為:不可變集合與可變集合,後者在前者的前面加上 Mutable

  列表:List/ MutableList

  集:Set/MutableSet

  映射:Map/MutableMap

  集合:Collection/MutableCollection

  叠代器:Iterable/MutableIterable

  

    list:

    空List   val emptyList = emptyList<String>()

    普通List val list = listOf(1,2,3)

    可修改的List val mList = mutableListOf(1,2,3)

    Set:

    空set val emptySet = emptySet<String>()

    普通set val set = setOf(1,2,3)

    可變的set val mSet = mutableSetOf(1,2,3)

    HashSet val hashSet = hashSetOf(1,2,3)

    LinkedSet val linkedSet = linkedSetOf(1,2,3)

    SortedSet val sortedSet = sortedSetOf(1,2,3)

    map:

    這的鍵值對用 to 關鍵字 , key to value

    空Map val emptyMap = emptyMap<Int,String>()

    普通map val map = mapOf(1 to "coder",2 to "pig")

    可變的map val mMap = mutableMapOf(1 to "coder",2 to "pig")

    HashMap val hashMap = hashMapOf(1 to "coder",2 to "pig")

    LinkedMap val linkedMap = linkedMapOf(1 to "coder",2 to "pig")

    SortedMap val sortedMap = sortedMapOf(1 to "coder",2 to "pig")

23.強勢的集合操作符

    總數操作符、過濾操作符、映射操作符、順序操作符、生產操作符、元素操作符

    總數操作符:

    any---判斷集合中是否有滿足條件的元素

    all---判斷集合中的元素是否都滿足條件

    none---判斷集合是否都不滿足條件,是則返回true

    count---查詢集合中滿足條件的元素個數

    reduce---從第一項到最後一項進行累計

    reduceRight---從最後一項到第一項進行累計

    fold---與reduce類似,不過有初始值,而不是從0開始累計

    foldRight---和reduceRight類似,有初始值,而不是從0開始累計

    forEach---循環遍歷元素,元素是it,可對每個元素進行相關操作

    forEachIndexed---循環遍歷元素,同時得到元素index(下標)

    max---查詢最大的元素,如果沒有則 返回null

    maxBy---獲取方法處理後返回結果最大值對應的哪個元素的初始值,如果沒有則返回null

    min---查詢最小值

    minBy---同maxBy

    sumBy---獲取方法處理後返回結果值的總和

    dropWhile---返回從第一項起,去掉滿足條件的元素,直到不滿足條件的一項為止

    過濾操作符:過濾後會返回一個處理後的列表結果,但不會改變原列表

    filter---過濾掉所有滿足條件的元素

    filterNot---過濾所有不滿足條件的元素

    filterNotNull---過濾NULL

    take---返回從第一個開始的n個元素

    takeLast---返回從最後一個開始的n個元素

    takeWhile---返回不滿足條件的下標前面的所有元素的集合

    drop---返回去掉前N個元素後的列表

    dropLastWhile---返回從最後一項起,去掉滿足條件的元素,直到不滿足條件的一項為止

    slice---過濾掉非指定下標的元素,即暴力下標對應的元素過濾list中指定下標的元素

    映射操作符:

    map---將集合中的元素通過某個方法轉換後的結果存到一個集合中

    mapIndexed---除了得到轉換後的結果,還可以拿到index(下標)

    mapNotNull---執行方法轉換前過濾掉為Null的元素

    flatMap---合並兩個集合,可以在合並的時候做些小動作

    groupBy---將集合中的元素按照某個條件分組,返回map

    順序操作符:

    reversed---相反順序

    sorted---自然排序(升序)

    sortedBy---根據方法處理結果進行自然排序

    sortedDescending---降序排序

    sortedByDescending---根據方法處理結果進行降序排序

    生產操作符:

    zip---兩個集合按照下標組合成一個個的Pair塞到集合中返回

    partition---根據判斷條件是否成立,拆分成兩個Pair

    plus---合並兩個list,可以用“+“替代

    unzip---將包含多個Pair的List轉換成含List的Pair

    元素操作符:

    contains---判斷集合中是否有指定元素,有返回true

    elementAt---查找下標對應的元素,如果下標越界會拋IndexOutOfBoundsException

    elementAtOrElse---查找下標對應元素,如果越界會根據方法返回默認值

    elementAtOrNull---查找下標對應元素,越界會返回Null

    first---返回符合條件的第一個元素,沒有拋NoSuchElementException

    firstOrNull---返回符合條件的第一個元素,沒有返回null

    indexOf---返回指定下標的元素,沒有返回-1

    indexOfFirst---返回第一個符合條件的元素的下標,沒有返回-1

    indexOfLast---返回最後一個符合條件的元素下標,沒有返回-1

    last---返回符合條件的最後一個元素,沒有拋NoSuchElementException

    lastIndexOf---返回符合條件的最後一個元素,沒有返回-1

    lastOrNull---返回符合條件的最後一個元素,沒有返回null

    single---返回符合條件的單個元素,如果沒有符合或超過一個,拋異常

    singleOfNull---返回符合條件的單個元素,如果沒有符合或超過一個,返回null

    

    


  

Kotlin基礎