基本語法
- 聲明變量
val a:Int=1 // val 標識的變量不可變 相當于java中的final
var a:Int=0 // var 標識的變量為可變變量
var a:Int=null // 顯示聲明可空變量
//Kotlin 中沒有標識變量,方法為靜態的關鍵字
class A{
companion object{
//在這里聲明的變量,方法相當于Java中的靜態變量,方法
}
}
lateinit var o:Object //lateinit:修飾變量表示這個變量會在使用之前由用戶主動賦值,使用時不再做非空判斷,如果使用時未賦值,會拋出空異常。
- 類繼承
class Base(Int a,Int b){}
class A(Int a,Int b) : Base(a,b){
//初始化代碼塊
Init{}
}
- 方法聲明
/**
*定義一個方法,方法的參數可以有默認值,返回值類型為Int
*/
fun a(a:Int,b:Int,c:Int=0):Int{
return 0
}
//調用方法
a(0,0,1)
a(0,0) //參數c 使用默認值
a(a=0,b=0,c=1) //
與Java的不同點
- 沒有三元操作符
Kotlin中if 可以是一個表達式,因此沒有三元操作符
//java:
int a=b>c?b:c;
//kotlin:
val a=if (b>c) b else c
- 沒有switch 關鍵字,相同功能可使用when代替
var a=3
when(a){
1->...
2->...
else->...
}
- Kotlin 中class 默認為final類,不能被繼承,如果想擁有子類,需用 open 關鍵字修飾
方法
- lambdas
lambda表達式由{}包裹,-> 符號 前邊是參數,后邊是body,如果函數有返回值,最后一行為返回值。
如果lamdba只有一個參數,可省略參數和->符號,在body中 it 表示入參
如果參數有多個并且部分參數在body 中不會使用可用 _ 表示
// lambdas 使用示例
// fun1 使用方法作為參數
fun fun1(noMeaning(a:Int,b:Int)->Int){}
// 調用fun1 并使用lamdba作為參數
fun1({1,2->2})
//
fun1({_,_->3})