1. 程式人生 > >Kotlin學習筆記

Kotlin學習筆記

1、變數常量宣告與符號

變數常量宣告

//val 代表常量不可變的,var代表變數,除非宣告為lateinit,否則都需要賦值,如果不能馬上賦值,需要新增?=null
private val a = 1 //宣告一個私有的Int常量
private var b = 1 //宣告一個私有的Int變數
private val c : Int = 1 //相當於private val a = 1
private var d : String ?= null //宣告一個可能為空的String變數
private lateinit var e : String //宣告一個稍後初始化的String變數
private val
info = Info() //宣告一個物件並且賦值 //private 是私有的,公有的不需要public,直接val a = 1就行,這個特性可以延伸到方法。 companion object{//注意,這個再Java上面使用不是很友好。需要**Class.Companion.**這樣使用 private const val A = "abc" //私有的String靜態常量 private const val B = 1 private val C = "abc" private val D = 1 }

符號

private var info : Info ?= null
//則在使用的時候需要
info?.setA()//只在不為null的時候呼叫,可以避免空指標錯誤 info!.setA()//如果為null,會報錯 //方法中 private fun a(info:Info?) //說明info可能為null private fun a(info:Info!) //說明info不可能為null private fun a(info:Info) //不說明info是否為null

2、常用語法結構

if else

if(1==1){
}
else{
}
val a = if(1==1)1 else 0
val b = if(1==1){1}else{0}
//這樣代替了Java的int a = 1==1?1:0

for

for(i in 0..10) //值從0到10
for(i in 0 until 10) //值從0到9
for(i in 10 downTo 0) //值從10到0
for(info in infoList) //相當於Java for(Info info : infoList)
//高階用法
for((i, info) in infoList.withIndex()) //i的值從0到infoList.Size()-1

when(相當於switch,比switch強大)

//注意不需要break了
when(a)
{
1->{}
2->{}
else->{}
}
val a = when(b)
{
1->1
2->2
else->3
}

3、類、介面的繼承、實現、重寫等

class A : Activity,OnClickListener //規定第一個(Activity)是繼承的類,第二個以及之後(OnClickListener)是介面。

設定介面

view.setOnClickListener(object : OnClickListener{
	override fun onClick(v: View) {
    }
})
//這是一個示例,如果需要快速設定多方法的介面,則需要這樣寫,如果是單方法的,會有語法糖。
//一般寫出來之後會有黃線提示,只需要按alt+enter修改就行。如下
view.setOnClickListener {  }
```kotlin
類方法重寫

```kotlin
之前發現了可以像Java那樣直接new Info(){}然後重寫的方法,但現在忘記了,我找找。

4、其他

function: () -> Unit(可以用到執行緒回撥等等地方)

private fun a(b:Int,function: (c:Int) -> Unit)
{
	function(b)
}
a(1){
//這裡寫方法體
}

let、apply、with等等結構的使用

private var a : Info?= nulll
//這樣經常會麻煩判斷a是否為null,而有了let的話
a?.let{
	it.setA()
	it.setB()
}
val info = Info().apply{
a = 1
b = 2
c = 3
}
with(info)
{
this.a = 1
this.b = 2
this.c = 3
}

其他,手續補上