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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kotlin学习笔记(3)- 语法

發(fā)布時間:2024/4/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kotlin学习笔记(3)- 语法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

系列文章全部為本人的學習筆記,若有任何不妥之處,隨時歡迎拍磚指正。如果你覺得我的文章對你有用,歡迎關注我,我們一起學習進步!kotlin學習筆記系列首發(fā)簡書和CSDN
Kotlin學習筆記(1)- 環(huán)境配置
Kotlin學習筆記(2)- 空安全
Kotlin學習筆記(3)- 語法
Kotlin學習筆記(4)- 流程控制
Kotlin學習筆記(5)- 類
Kotlin學習筆記(6)- 屬性
Kotlin學習筆記(7)- 接口
Kotlin學習筆記(8)- 擴展
Kotlin學習筆記(8)- 擴展(續(xù))
Kotlin學習筆記(9)- 數(shù)據(jù)類
Kotlin學習筆記(10)- 泛型
Kotlin學習筆記(11)- 內(nèi)部類和嵌套類
Kotlin學習筆記(12)- 委托
Kotlin學習筆記(13)- 函數(shù)式編程
Kotlin學習筆記(14)- lambda

一、基礎語法

  • 在語句的結(jié)尾不用加;

  • 聲明一個方法需要加關鍵字fun

  • 如果函數(shù)是重載父類的方法,則需要加override關鍵字

  • 方法中的參數(shù)格式為:形參名+冒號+形參類型

    fun a (str : String, num : Int)
  • 二、定義類

  • kotlin默認唯一構(gòu)造器,暨類定義同時也是構(gòu)造器

    class Person(name : String, age : int) { init{ // do some thing } } 翻譯成java為:final public class Person {public Person(String name, int age){init();}private void init(){// do some thing} }
  • 仔細看會發(fā)現(xiàn),翻譯成的java類定義前面有final修飾符,因為在kotlin中類默認為final的,也就是不可繼承的。如果要繼承,需要聲明為open,或者abstract。

    open class Person(name : Stringage : int) { init{ // do some thing } }
  • 如果init中沒有操作,則可以省略

    class Person(name : Stringage : int)
  • 如果連參數(shù)也沒有,甚至可以這么寫

    class Person
  • 三、定義函數(shù)方法

  • 函數(shù)方法要加fun關鍵字,方法的返回類型寫在參數(shù)后

    fun sum (a : Int, b : Int) : Int {return a+b }
  • 如果像上面這樣,函數(shù)內(nèi)只有一條語句,則可以直接賦值

    fun sum (a : Int, b : Int) : Int = a+b
  • kotlin編譯器會自動根據(jù)返回值推測方法返回類型

    fun sum (a : Int, b : Int) = a+b
  • 如果方法需要返回值,則返回Unit,類似java中的void,當然Unit也是可以忽略的

    fun printSum (a : Int, b : Int) : Unit = print(sum(a, b)) //等價于 fun printSum (a : Int, b : Int) = print(sum(a, b))
  • 看到網(wǎng)上資料說,如果方法是public的,則必須要聲明返回類型。但是我自己試驗發(fā)現(xiàn)kotlin的方法默認是public的,同時上面說的幾點都適用,也就是不是必須要明確聲明返回類型。如有錯誤之處,歡迎隨時拍磚指正。

    四、定義變量

    kotlin中將java中的變量演化成了兩種:var表示變量,val便是常量(相當于java中用final修飾)

    var a : Int = 1 // 定義一個普通變量 var b = 2 // 和方法的返回類型一樣,編譯器也會根據(jù)值自動判斷變量類型 b = 3 // 普通變量可多次賦值 val c = 1 // 定義一個常量,和普通變量一樣,編譯器也會自動判斷類型 c = 2 // 提示編譯錯誤,無法運行。常量只能賦值一次 val d : Int // 如果常量在定義的時候沒有賦值,則必須明確類型 d = 1 // 賦值

    五、使用泛型Array代替數(shù)組

    例如最經(jīng)典的main方法

    Java: public static void main(String[] args){// do some thing }Kotlin: fun main(args : Array<String>){// do some thing }

    六、條件語句

    fun max(a: Int, b: Int): Int {if (a > b)return aelsereturn b } //或者也可以把if語句作為省略方法體的方法 fun max(a: Int, b: Int) = if (a > b) a else b

    七、空值

    在類型后面跟一個問號?表示可能為空,跟雙感嘆號!!表示一定不能為空。具體的請看我上一篇文章《Kotlin學習筆記(2)- 空指針》。

    八、類型檢測并自動轉(zhuǎn)換

    fun getStringLength (obj : Any) : Int? { // 通過is關鍵字做類型判斷if(obj is String){ // 類型判斷后,系統(tǒng)自動轉(zhuǎn)型,這里自動將obj轉(zhuǎn)為String類型return obj.length} // 類型判斷之外,obj依然是Any類型,沒有被轉(zhuǎn)型,所以不能調(diào)用length,會報編譯錯誤var length = obj.lengthreturn null } fun getStringLength (obj : Any) : Int? { // 通過is關鍵字做類型判斷,因為第一個判斷條件已經(jīng)通過并自動轉(zhuǎn)型, // 所以第二個判斷時obj可以直接作為String類型使用if(obj is String && obj.length > 0){ // 類型判斷后,系統(tǒng)自動轉(zhuǎn)型,這里自動將obj轉(zhuǎn)為String類型return obj.length}return null }

    九、循環(huán)

  • for循環(huán),使用in關鍵字

    fun main(args : Array<String>) {for(arg in args)print(arg)for(i in args.indices)print(args[i])for((index, value) in args.withIndex()){println("index : $index, value : $value")} }
  • while循環(huán),和java的基本一致

    fun main(args : Array<String>) {var i = 0while (i < args.size){print(args[i++])}var j = 0do{print(args[j])}while (++j<args.size) }
  • 十、when表達式(類似于java中的switch)

    when的特性與switch差不多,都是通過列舉比對列舉出來的條件進行匹配,滿足條件的分支會被執(zhí)行。when可以作為表達式,也可以作為聲明。如果用作表達式的話,那么滿足條件的分支就是總表達式。如果用做聲明,不滿足條件的分支的的的值會被忽略,只保留滿足條件的分支,而且返回的值也是最后一個表達式的值。

  • 傳統(tǒng)用法

    var x = 3 when (x) {1 -> print(1)2 -> print(2)else -> print(5) }
  • 作為表達式,滿足條件的分支會被作為when的返回值

    var x = 3 var result = when (x) {1 -> 12 -> 2else -> 5 }
  • 分支條件一致,如果有分支可以用同樣的方式處理的話, 分支條件可以連在一起處理。

    when (x) {0,1 -> print("x == 0 or x == 1")else -> print("otherwise") }
  • 使用任意表達式作為分支的條件

    when (x) {parseInt(s) -> print("s encode x")else -> print("s does not encode x") }when (x) {in 1..10 -> print("x is in the range")in validNumbers -> print("x is valid")!in 10..20 -> print("x is outside the range")else -> print("none of the above") }
  • 總結(jié)

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

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