Kotlin學習筆記
阿新 • • 發佈:2018-12-12
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
}
其他,手續補上