學習 Kotlin基礎知識(一)

一、Kotlin 與java 的不同之處

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,可以匹配值,範圍,類型與參數

二、數據類型 

    Double   64

    Float  32

    Long  64

    Int   32

    Short  16

    byte    8

  ①沒有自動向上轉型

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

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

  ④Boolean的值爲true或false

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

  ⑥位運算符

三、數組

  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)

四、流程控制

  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

 五、異常

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

六、集合

  跟據是否可變分爲:不可變集合與可變集合,後者在前者的前面加上 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")

七、強勢的集合操作符

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

    總數操作符:

    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---將集合中的元素按照某個條件分組,返回ma

    順序操作符:

    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

該篇博文,摘抄於:https://www.cnblogs.com/wxnote/p/7397223.html  尊重原創,僅隨筆記錄一下,方便學習查閱!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章