Kotlin—基本语法 (五)

这篇博客讲表达式、语句和函数,讲的有点多,请认真读。

一、表达式和语句

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"
}

里面的函数,已经没有了名字。

今天讲的比较多希望你可一认真的看。

由于工作需要,更新可能会很慢。

猜你喜欢

转载自blog.csdn.net/qq_41346910/article/details/87071755