這篇博客講表達式、語句和函數,講的有點多,請認真讀。
此外這系列博客還不完善,請等待我完善好。當你發現這行字沒有了,就是穩定了,謝謝。
一、表達式和語句
1、if
在Kotlin中if就是語句也是表達式。(表達式有返回值,語句沒有),所以比Java更加靈活和簡便些。
1.1 if語句使用方式
if語句很簡單,和Java也一樣。接下有幾個栗子吃
栗子1:
fun main(args: Array<String>) {
val a = 90
if (a > 100) {
println("a>100")
}
if (a < 100)
println("a<100")
if (a == 100) println("a<100")
}
栗子2:
fun main(args: Array<String>) {
val a = 90
if (a > 100) {
println("a>100")
} else {
println("a<100")
}
}
栗子3:
fun main(args: Array<String>) {
val a = 90
if (a > 100) {
println("a>100")
} else if (a == 100) {
println("a=100")
} else if (a < 100)
println("a<100")
}
都是一些正常使用。
1.2 if表達式
Kotlin的簡化可能會讓你感覺不規範,或者難以接受,哈哈。看栗子
栗子
fun main(args: Array<String>) {
val a = 90
var b = if (a < 100) {
println("a<100")
"b大於100"
} else {
println("a>100")
"b小於於100"
}
println(b)
}
其它的依次類推。
2 when
Kotlin中沒有switch語句,但有更好用的when。when和if一樣,既可以是語句,有可以是表達式。
2.1 when語句使用
我寫了一個比較全的栗子
fun main(args: Array<String>) {
val a = 90
var b = ""
when (a / 10) {
10 -> {
b = "a=10"
}
9 -> b = "9"
8, 7 -> "b=8或者7"
else -> "b<7"
}
println(b)
}
2.2 when 表達式
fun main(args: Array<String>) {
val a = 90
var b = when (a) {
100 -> "b=100"
90 -> "b=90"
80, 70 -> "b在80-70之間"
else -> "b<60"
}
println(b)
}
3 while 和 do whlie語句
while和do whlie是Kotlin的循環語句,它們都是語句,沒有表達式。也和Java的使用方式一樣,同時也可減少代碼。
3.1while語句使用
fun main(args: Array<String>) {
var i=0
while(i+1<100){
i++
}
println(i)
}
3.2 do while語句使用
下面的例子,清楚的說明了do while至少執行一次
fun main(args: Array<String>) {
var i = 0
do {
println("第${i}次")
++i
println("i=$i")
} while (i == 0)
}
4. for循環
Kotlin中的for循環和Java就大不相似了,所以好都Java工程師,一使用for就對kotlin有了反感。
看看kotlin的for循環怎麼寫吧!
栗子1:
遍歷區間
fun main(args: Array<String>) { for (a in 1..100) { // 定義了變量a // 一個區間類似於集合,區間裏保存這1到100的整數 println(a) // 把區間的數遍歷賦值給a } }
栗子2:
遍歷集合
fun main(args: Array<String>) { val intArray= intArrayOf(11,12,13,14,15) // 定義集合 for (a in intArray) { // 定義了變量a println(a) // 把集合的數遍歷賦值給a } }
栗子3:
獲取集合下標和值的遍歷
fun main(args: Array<String>) { val intArray = intArrayOf(11, 12, 13, 14, 15) // 定義集合 for (a in intArray.indices) { //indices爲下標,集合和數組都有這個量 println("集合下標${a}的值爲${intArray[a]}") } }
5.返回和跳轉
Kotlin 有三種結構化跳轉表達式:
- return。默認從最直接包圍它的函數或者匿名函數返回。
- break。終止最直接包圍它的循環。
- continue。繼續下一次最直接包圍它的循環。
break和在Java中基本使用一樣。
break 中斷循環,退出循環
fun main(args: Array<String>) { for (a in 1..100) { if (a == 5) { break } println(a) } }
continue 跳過本次循環,繼續下次
fun main(args: Array<String>) { for (a in 1..10) { if (a == 5) { continue } println(a) } }
6.區間
什麼是區間,如果你沒有一點概念,請查看數學上的區間。在數學上區間很容易理解,在編程更容易理解。就是一組整數或者是字符,別的不行。
區間還分爲閉區間和半開區間兩種
6.1 閉區間和半開區
閉區間和半開區的區別就是包括的範圍。
閉區間:比較容易,就是指從指定的數開始到指定的書結束。包括指定的頭和尾巴。使用..表示 栗子1
半開區間:就是從指定的數開始到指定的數結束,但不包括最後的數。使用until 表示 栗子2
如果你學過Java肯定知道包左不包右的意思,這裏相同。
栗子1:
fun main(args: Array<String>) { for (a in 1..5) { println(a) } }
結果:
1
2
3
4
5
栗子2:
fun main(args: Array<String>) { for (a in 1 until 5){ println(a) } }
結果:
1
2
3
4沒有5!
二、函數
在Kotlin編程函數中函數是不可少的。它比Java的方法靈活和多變。
它可以獨立在類和接口外,成爲頂層函數,也可以嵌套使用。這是Java的方法做不到的。
2.1 主函數
主函數就是我們之前經常出現的,各個編程語言都有,基本相似。它是程序的主入口,沒有它就無法開始。
fun main(args: Array<String>) {
}
比較簡單的函數,它由fun 關鍵字、方法名mian、args變量名、ArrayString變量類型和小括號,大括號組成。
是一個簡單常見的函數,它有方法名和參數,所以是有參數函數。
2.2 有參數函數
有參數的方法,也很簡單,大多數和主函數差不多。但是與Java不同的就是靈活性。
fun main(args: Array<String>) {
add(b=10, a=20)
}
fun add(a: Int, b: Int) {
a + b
}
你可以直接指定參數是誰的,而且順序可以改變。但是要注意使用中,一旦前面指定了參數是誰的,後面的就要指定,否則就會報錯的。
注意這裏的函數都是頂層函數,它不在任何類裏。
你可能感覺這沒什麼用,接下你可以配合給函數默認值使用
2.3 默認值函數
函數可以直接賦一個默認值,怎麼使用。來看
fun main(args: Array<String>) {
add(1,2)
}
fun add(a: Int, b: Int=1) {
a + b
}
這時如果你使用函數的時候,就可以先不給值。當然這個例子給了,給了就會把默認值覆蓋。這樣做可以防止大量的函數重載。對kotlin函數也可以重載。你說不知道上面的默認值覆蓋了沒有?馬上就知道了。
2.4 返回值函數
在使用函數很情況,我們還需要把處理的結果拿到,這樣就用到了帶返回值的函數。
fun add(a: Int, b: Int = 1): Int {
return a + b
}
很簡單,在結束括號後加個冒號和返回值類型,然後return返回就可以了。這樣你就知道這個函數的默認值會不會被覆蓋了。
fun main(args: Array<String>) {
println( add(1, 2))
}
fun add(a: Int, b: Int = 1): Int {
return a + b
}
結果:
覆蓋了吧。有返回值函數,弄明白了,你會需要明白無返回值函數。
2.5 無返回值函數
無返回值函數,其實就是有返回值了。它返回的是Unit類型,kotlin建議你直接忽略,因爲它是無意義的返回值。
fun void ():Unit{
}
此時編譯器會提示你省略Unit。
在Kotlin還有一種特殊意義的返回值,它只能用用函數的返回。
2.6 永遠不會正常返回函數
這個函數很特殊,你基本使用不到。它用與封裝框架的時候使用。
fun Null ():Nothing{
throw NullPointerException()
}
這裏直接返回了一個異常。在Kotlin中函數返回異常。
2.7 表達式函數
表達式函數也是kotlin一種極間的方式。
fun add(): String {
return "add"
}
fun Add()= "Add"
直接=,大大簡化了簡單函數的代碼量。
2.8 局部函數
就是函數嵌套,在Java中的不可能的方法裏寫方法。
fun add() {
fun Add() = "Add"
}
2.9 匿名函數
就是沒有名字的函數
fun add() {
fun () = "Add"
}
裏面的函數,已經沒有了名字。
今天講的比較多希望你可一認真的看。
由於工作需要,更新可能會很慢。