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)
其他,後續補上