Kotlin 学习:基本语法

1. 函数

1.1 函数的声明

函数定义使用关键字 fun,参数格式为:参数 : 类型

    fun sum(a: Int, b: Int): Int {
        return a + b
    }

1.2 省略返回值类型

将表达式作为函数体、返回值类型自动推断的函数:

fun sum1(a: Int, b: Int) = a + b

1.3 无返回值的函数

在 Kotlin 中,函数无返回值,用关键字:Unit ,类似 Java 中 void:

    fun sum2(a: Int, b: Int): Unit {
        Log.e("zzw", "无返回值的函数")
    }

Unit 返回类型可以省略:

    fun sum3(a: Int, b: Int) {
        Log.e("zzw", "无返回值的函数,返回值类型可以省略")
    }

2. 变量 

2.1 变量的声明

定义只读局部变量使用关键字 val 定义,可重新赋值的变量使用 var 关键字:

    val mA = 1
    val mB = 2
    var mC = 3

当尝试给 val 再次赋值,会有错误提醒:

3. 注释

Kotlin 支持单行(或行末)与多行(块)注释:

        // 这是一个行注释

        /* 这是一个多行的
       块注释。 */

Kotlin 中的块注释可以嵌套:

        /* 注释从这里开始
        /* 包含嵌套的注释 */
        并且在这里结束。 */

4. 条件表达式

Kotlin 中条件表达式跟 Java一样:

    fun maxNum(a: Int, b: Int): Int {
        if (a > b) {
            return a
        } else {
            return b
        }
    }

5. 空值与 null 检测

当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空:

    var a:String ?="zzw"
    var b:String ="zzw"

如果是普通的声明变量:

var b:String ="zzw"

当对其赋值为 null 的时候,会报错: 

对于 a,因为 a 可能为空,所以无法进行如下的调用:

对于 b,不存在空的情况,不存在发生空指针的情况,所以可以进行如下的调用:

b.length

如果 a 仍然要调用 a.lenght,则用如下的方式:

var l = a?.length ?: -1

如果 a 为 null,返回-1,否则返回 a.length。

6. 类型检测与自动类型转换

is 运算符检测一个表达式是否某类型的一个实例。

    fun getStringLength(obj: Any): Int? {
        if (obj is String) {
            return obj.length
        } else {
            return null
        }
    }

7. 循环 

7.1 for 循环

        val items = listOf("apple", "banana", "kiwifruit")
        for (item in items) {
            Log.e("zzw", item);
        }

运行结果:

2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: apple
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: banana
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: kiwifruit

或者:

        val items = listOf("apple", "banana", "kiwifruit")
        for (index in items.indices) {
            Log.e("zzw","item at $index is ${items[index]}")
        }

 运行结果:

2019-09-23 22:29:03.650 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 0 is apple
2019-09-23 22:29:03.650 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 1 is banana
2019-09-23 22:29:03.651 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 2 is kiwifruit

7.2 while 循环 

        val items = listOf("apple", "banana", "kiwifruit")
        var index = 0
        while (index < items.size) {
            Log.e("zzw", "item at $index is ${items[index]}")
            index++
        }

8. when 表达式

    fun describe(obj: Any): String =
        when (obj) {
            1 -> "One"
            "Hello" -> "Greeting"
            is Long -> "Long"
            !is String -> "Not a string"
            else -> "Unknown"
        }

9. 使用区间

使用 in 运算符来检测某个数字是否在指定区间内:

        var x = 5;
        if (x in 1..10) {
            Log.e("zzw", "fits in range")
        }

判断是否在范围外:

        if (x !in 6..10) {
            Log.e("zzw", "x is out of rang")
        }

参考:

https://kotlinlang.org/docs/reference/basic-syntax.html

https://www.kotlincn.net/docs/reference/basic-syntax.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值