1. 變量
- val : 常量
聲明初始化後不能再改變的量,類似java中的final
val a: Int = 1 // 指定類型申明,不過這是多餘的操作
val age = 5 // 自動確定爲int
val name: String // 指定來類型,但是先不初始化
name = "小明" // 可以延遲初始化
- var :變量
聲明初始化後還能繼續修改
fun logString() {
//自動確定爲int
var ageVar = 5
//可以指定類型,當然這是多餘的操作
var money: Double = 11.11
}
2. 函數
格式:函數fun關鍵字定義 方法名(參數):返回值
如:
fun sum(a: Int, b: Int): Int {
return a + b
}
3. Null檢測
想必大家在最初瞭解的時候,最看中的則是kotlin自帶null類型檢測了
3.1 聲明檢查
默認聲明後是不允許置爲null的,就下這樣
var a: String = "hello"
a = null//編譯器會直接提示錯誤
如果需要允許可以爲null,那麼就在類型後加一個?
var a: String? = "hello"
a = null
3.2 在調用方法變量的時候檢查
在調用方法時,也有會提示錯誤
var a: String? = "hello"
var length = a?.length//編譯器會直接提示錯誤
4. 條件表達式
4.1 for循環
4.1.1 日常寫法
- 增強for循環寫法 ,採用 in 關鍵字(後面會講到),就像java裏採用:方式
var itemF = listOf("1", "2", '3', "4")
# java方式就像 for (String any : itemF)
for (any in itemF) {
//輸出遍歷內容
Log.i(TAG, "any :" + any)
}
- 獲取index方式遍歷
java裏,我們如果需要index,很多時候會直接採用最普通的for(int i=0;i<itemF.size();i++)這種方式,但是kotlin有另一種方式遍歷到index,如下
//需要獲取index方式遍歷
for (index in itemF.indices) {
Log.i(TAG, "item at" + index + ", " + itemF[index])
}
4.1.2 配合方法做簡寫
比起java還有更多的一些用法,比如在方法裏可以配合簡寫方式出現
fun maxCompare(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
可以改寫爲
fun maxOf(a: Int, b: Int) = if (a > b) a else b
4.2 while
while常用方法與java基本類似
val items = listOf("1", "2", "3")
var index = 0
while (index < items.size) {
Log.i(TAG, "while test . item at" + index + ", " + items[index])
index++
}
4.3 when
採用when關鍵字。與java中的switch很像,替代裏switch,寫起來更簡潔,省去了case和break,還支持lambda,就像下面這樣
val i = 1
when (i) {
//匹配2
2 -> {
Log.i(TAG, "when test . is 2 ")
}
//匹配1,lambda方式
1 -> Log.i(TAG, "when test . is 1 ")
//都不匹配
else -> Log.i(TAG, " no match")
}
4.4 Ranges
- in關鍵字,用在條件判斷中。
判斷一個數是否在一個範圍裏(左右均包含)
val x = 5
val y = 4
//判斷x即5,是否在y+1即5到10這個區間裏
if (x in (y + 1)..10) {
Log.i(TAG, "x in range")
}
非判斷就在in前加一個感嘆號,比如
val x = 5
val y = 4
//即判斷4 不在 3到1的中(3,2,1)
if (x !in (y - 1) downTo 1) {
Log.i(TAG, "x in range")
}
這裏可以注意到,前面升序的時候我們採用的兩個點,比如從1到10,則爲1…10,但是降序的時候,我們需要用關鍵字 downTo
- step關鍵字
step可在for循環的時候,如果不想挨個遍歷,可以採用跳躍的方式
//從1遍歷到10,每次間隔2
for (x in 1..10 step 2) {
Log.i(TAG, "setp2 " + x)
}
//從9遍歷降到0,每次間隔3
for (x in 9 downTo 0 step 3) {
Log.i(TAG, "setp3 " + x)
}
輸出:
#升序增加2方式
setp2 1
setp2 3
setp2 5
setp2 7
#降序跳躍3方式
setp2 9
setp3 9
setp3 6
setp3 3
setp3 0
- 集合
kotlin集合沒有java那麼
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LzGuqxjV-1575041818924)(https://github.com/nxSin/BlogPic/blob/eaa4b04c4d12bfe7377941928e0e7d07642d104a/kotlin/collection.png?raw=true)]
前面有看到採用了listOf來初始化一個列表,這樣初始化出來的列表是不可變的,可以遍歷操作
//不可變列表
val nonMutlist = listOf("1", "2", "3", "4")
nonMutlist.forEach { str -> Log.d(TAG, "遍歷不可變列表:str " + str) }
另外還有一個可變的列表MutableList,其長度內容是
//可變列表
val mutableList: MutableList<String> = mutableListOf()
mutableList.add("1")
mutableList.add("2")
mutableList.forEach { str -> Log.d(TAG, "遍歷可變列表:str " + str) }
集合類比較常用,這裏先簡單提一下