kotlin入門(3)——基礎(chǔ)語(yǔ)法

一.定義變量

1.val定義:只能賦值一次

val a: Int = 1;//定義整數(shù)變量

val a = 1;自動(dòng)推斷出 `Int` 類型

val c: Int? // 如果沒(méi)有初始值類型不能省略

2.var定義:可重新賦值

var x = 5;

x+=1;


二.表達(dá)式

1.if表達(dá)式與java一樣這里不說(shuō)了

2.for、while循環(huán):

val items = listOf("apple", "banana", "kiwifruit")

for (item in items) {

? ? println(item)

}

或者:

for (index in items.indices) {

? ? println("item at $index is ${items[index]}")

}

3.when:

相當(dāng)于java的switch,但是功能更強(qiáng)大:

when (x) {

? ? 1 -> print("x == 1")

? ? 2 -> print("x == 2")

? ? 3,4 -> print("x == 3 or x == 4”)//相同處理放在一起用逗號(hào)隔開(kāi)

? ? in 1..10 -> print("x is in the range”)//1到10范圍內(nèi)的

? ? !in 10..20 -> print("x is outside the range”)//不在區(qū)間內(nèi)的

? ?is String -> x.startsWith("prefix”)//檢測(cè)是否為字符串

? ? else -> { // 注意這個(gè)塊

? ? ? ? print("x is neither 1 nor 2")

? ? }

}


三.函數(shù):

fun sum(a: Int, b: Int): Int {

? ? return a + b

}


解釋:

fun:kotlin函數(shù)使用fun關(guān)鍵字聲明

sun:為函數(shù)名

a:為參數(shù)

a:Int:表示int類型的參數(shù)

Int:表示返回類型

返回?zé)o意義的值,有兩種寫法:

1.fun printSum(a: Int, b: Int): Unit {

? ? println("sum of $a and $b is ${a + b}")

}

2.省略Unit:

fun printSum(a: Int, b: Int) {

? ? println("sum of $a and $b is ${a + b}")

}


單表達(dá)式函數(shù):

當(dāng)函數(shù)返回單個(gè)表達(dá)式時(shí),可以省略花括號(hào)并且在?=?符號(hào)之后指定代碼體即可:

fun double(x: Int): Int = x * 2

相當(dāng)于:

fun double(x:Int): Int{

? ? ?return x*2

}


在 Kotlin 中函數(shù)可以在文件頂層聲明,這意味著你不需要像一些語(yǔ)言如 Java、C# 或 Scala 那樣需要?jiǎng)?chuàng)建一個(gè)類來(lái)保存一個(gè)函數(shù)。此外除了頂層函數(shù),Kotlin 中函數(shù)也可以聲明在局部作用域、作為成員函數(shù)以及擴(kuò)展函數(shù)。


函數(shù)類型:

1.局部函數(shù)(即一個(gè)函數(shù)在另一個(gè)函數(shù)內(nèi)部):局部函數(shù)可以訪問(wèn)外部函數(shù)(即閉包)的局部變量

2.成員函數(shù)是在類或?qū)ο髢?nèi)部定義的函數(shù):成員函數(shù)以點(diǎn)表示法調(diào)用:Sample().foo()



四.創(chuàng)建類和實(shí)例

val rectangle = Rectangle(5.0, 2.0) // 不需要“new”關(guān)鍵字


五.為null判斷

1.不為null

val files = File("Test").listFiles()

println(files?.size)//files不為null時(shí)獲取它的size


2.不為null else

val files = File("Test").listFiles()

println(files?.size ?: "empty”)//if不為null打印files的size 否則打印empty


3.不為空?qǐng)?zhí)行

val value = ...

value ?.let{

? ? ?//不為空時(shí)執(zhí)行

}


六.with

定義:將對(duì)象作為函數(shù)的參數(shù),在函數(shù)內(nèi)可以通過(guò) this指代該對(duì)象。返回值為函數(shù)的最后一行或return表達(dá)式。

例如:

var?paint?=?Paint()


paint.color?=?Color.BLACK

paint.strokeWidth = 1.0f


使用with:

var paint = Paint()

with(paint){

? ? ?color = Color.BLACK

? ? strokeWidth = 1.0f

}


var?list=?mutableListOf<String>()

list.add(“1")

list.add(“2")

使用with:

var list = with(mutableListOf<String>()){

? ? ?add(“1")

? ? ?add(“2")

? ? ?this

}


七.空安全

在 Kotlin 中,類型系統(tǒng)區(qū)分一個(gè)引用可以容納?null?(可空引用)還是不能容納(非空引用)。 例如,String 類型的常規(guī)變量不能容納?null:

1.var a: String = "abc"

a = null // 編譯錯(cuò)誤

調(diào)用:

val l = a.length 就不可能會(huì)出現(xiàn)空指針報(bào)錯(cuò)

2.如果要允許為空,我們可以聲明一個(gè)變量為可空字符串,寫作?

String?

var b: String? = "abc"

b = null // ok

print(b)

調(diào)用:

val l = b.length // 錯(cuò)誤:變量“b”可能為空,調(diào)用時(shí)編譯器會(huì)報(bào)錯(cuò)

如果一定要調(diào)用需要做判斷,調(diào)用方式:

1.val l = if(b != null) b.length else -1

2.b?.length//b不等于null時(shí)執(zhí)行b.length

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容