Kotlin學習筆記

QQ羣交流:425219113(計算機語言交流)

1、變量常量聲明與符號

變量常量聲明

//val 代表常量不可變的,var代表變量,除非聲明爲lateinit,否則都需要賦值,如果不能馬上賦值,需要添加?=null
private val a = 1 //聲明一個私有的Int常量
private var b = 1f //聲明一個私有的Float變量
private val c : Int = 1 //相當於private val a = 1
private var d : String ?= null //聲明一個可能爲空的String變量
private lateinit var e : String //聲明一個稍後初始化的String變量
val f = 1 //聲明一個publick的Int常量
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 in 0..10 step 2) //循環 ,步長是2
//高級用法
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 {  }

類方法重寫

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

4、其他

可以不需要findViewById了

protected void onCreate(Bundle savedInstanceState) {
	setContentView(R.layout.layout)
	tvText.text =text
}

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
}

class引用

Intent(this, XXActivity::class.java)

其他,後續補上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章