Kotlin之從入門到放棄
var:變量
val:常量
聲明變量\常量:
var code: Int = 0
var isSuccess: Boolean = false
var message: String? = null
//空安全變量
var str: String = "hello"
//常量數(shù)組int[][][] arrs = new int[3][2][1];
val arrs = Array(3) { Array(2) { IntArray(1) } }
條件:
- if else 同java一樣
- java的switch ==> kotlin的when ,when子式可以是各種返回Boolean的表達(dá)式
val x = 7
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}
override fun onTouchEvent(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
val currentTime = System.currentTimeMillis()
if (currentTime - lastTime < 500) {
lastTime = currentTime
return true
} else {
lastTime = currentTime
}
}
}
return super.onTouchEvent(event)
}
3.循環(huán)
while 和 do...while 同Java一樣;
for有變化
val list = ArrayList<String>()
//遞增for (int i = 0; i < list.size(); i++)
for (i in list.indices) {
print(list[i])
}
//遞增for (int i = 2; i < list.size(); i++)
for (i in 2..list.size-1) {
print(list[i])
}
//遞減for (int i = list.size(); i >= 0; i--)
for (i in list.size downTo 0) {
print(list[i])
}
//操作列表內(nèi)的對(duì)象
for (item in list) {
print(item)
}
//加強(qiáng)版
for((i候址, item) in list.witnIndex()) {
print(list[i])
print(item)
}
//變種版
list.forEach {
print(it)
}
list.forEach {
print(it)
}
list.forEachIndexed { i, s ->
print(list[i])
print(s)
}
list.forEachIndexed(object :(Int,String) -> Unit{
override fun invoke(i: Int, s: String) {
print(list[i])
print(s)
}
})
冒號(hào)用法
//val表示常量var表示變量聲明
val name: String = "tutu"
//省略類型說(shuō)明
var age = "23"
//fun表示函數(shù)
fun getName(): String{
return "tutu"
}
//類繼承
class UserList<E>(): ArrayList<E>() {
//...
}
//java類寫成 類名::class.java
val intentGo = Intent(this@MainActivity, RegisterActivity::class.java)
@用法
它告訴你 this 和 return 指的是哪一個(gè)
Toast.makeText(this@CaptchaActivity, resources.getText(R.string.please_input_correct_captcha), Toast.LENGTH_LONG).show()
valintentGo=Intent(this@MainActivity,RegisterActivity::class.java)
startActivity(intentGo)
class User {
inner class State{
fun getUser(): User{
//返回User
return this@User
}
fun getState(): State{
//返回State
return this@State
}
}
}
bean類的get set方法省略
class BannerBean {
var code: Int = 0
var isSuccess: Boolean = false
var message: String? = null
var data: List<DataBean>? = null
class DataBean {
var id: Int = 0
var bannerUrl: String? = null
var forwardUrl: String? = null
var bannerSource: String? = null
}
}
//賦值
val bannerBean =BannerBean ()
bannerBean .message="我是message"
bannerBean .code=1
//取值
val message=bannerBean .message
val code=bannerBean .code=1
$賦值
Log.i("wzx",message:${bannerBean .message})
//輸出
message:我是message
空判斷
//類型后面加?表示可為空
var age: String? = "23"
//拋出空指針異常
val ageInt = age!!.toInt()
//不做處理跳過(guò)
val ages = age?.toInt()
權(quán)限
Java中內(nèi)部類和參數(shù)默認(rèn)為為private俯艰,Kotlin內(nèi)部類和參數(shù)默認(rèn)為public渤愁;
類默認(rèn)為不可繼承(final)慕趴,想要可被繼承要聲明為 open 或 abstract漾峡;
取消了static關(guān)鍵字攻旦,靜態(tài)方法和參數(shù)統(tǒng)一寫在 companion object 塊;
internal模塊內(nèi)可見(jiàn)生逸,inner內(nèi)部類牢屋。