Kotlin基本语法

Quibbler 2020-6-4 816

 Kotlin基本语法


        了解Kotlin语言的基本语法。



1、包

        kotlin文件以.kt结尾,编译文件还是如此只不过在文件名后面加上Kt后缀。这一点和Java不同,Java源文件.java,编译后为.class文件。


1.1、包定义

        每个kotlin文件的第一行就用关键字package定义该文件所在的包。

例:

package main

fun main(args: Array<String>) {
    println("Hello Kotlin!")
 }

       

1.2、导包

        用到其它kotlin文件需要使用关键字import导入,这一点和Java一样。kotlin会默认导入一些核心包,可以直接使用这些包中的方法和类。

kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*

例:

package main
import main.grammar.basic.Basic

fun main(args: Array<String>) {
    val value = Basic()
 }



2、变量与常量

        kotlin中的常量,以及如何定义一个变量。


2.1、常量

        常量值又称为字面常量,它是通过数据直接表示。


2.2、可变变量

        可变变量用关键字var声明。

         ①定义的时候赋值,可以自动类型推断,可以省去类型

    var b = 2

         ②只定义一个变量,但不赋值,这时必须指明变量的类型。否则报错:


2.3、不可变变量

        不可变变量用关键字val声明。

        ① 用val关键字定义一个不可变变量。一旦赋值不可再次被复制。

    val a: Int = 2

        ②可以在定义的时候不赋值,这一点和Java不同。

        java用final定义不可变变量,必须在定义的时候初始化赋值

    private static final int A = 1;

        而kotlin可以在定义的时候不赋值,稍后再赋值。但是只能赋值一次,否则报错。



3、null

        

3.1、变量可空

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

    val b: Int? = null

        不加而直接给变量赋null会报错:



3.2、方法返回可空

        定义一个函数,一般没有返回值不写(或者写Unit),或者指定返回值类型。函数的定义参考2.1节。

fun compute(a: Int): Int {
    return a
}

        在函数的返回类型后面加上表示该函数的返回值可为null

fun compute(a: Int): Int? {
    return a
}


3.3、null检查

        字段后加!!像Java一样抛出空异常

    val b: Int? = null
    println(b)

        运行后打印输出:null

         如果变量为空需要抛出异常,就加上!!

    val b: Int? = null
    println(b!!)

        运行后抛出异常:Exception in thread "main" kotlin.KotlinNullPointerException

                                   at main.HelloKotlinKt.main(HelloKotlin.kt:13)

        字段后加可不做处理返回值为null

    val b: Int? = null
    println(b?.toString())

        运行后,判断到b为空,不调用toString()方法,直接返回null,即不作处理。

        ?:表达式做判空断处理

    val b: Int? = null
    println(b ?: -1)

        运行时,如果b为空,则表达式取值为-1,否则取值b。


3.4、判空

        判空这个开发中非常容易见到,到处都是(这也导致代码有点乱)。

    val b: Int? = null
    if (b != null) {
        println(b)
    } else {
        println("b == null")
    }



4、类型检测/转换

        使用关键字is判断变量是否是某种类型,相当于Java中的instance关键字。

fun isStringType(obj: Any): Boolean {
    return obj is String
}

        做过类型判断以后,obj会被系统自动转换为目标类型

        还有一个衍生的关键字!is,判断不是某种类型:

    obj !is String

        提一下Any类型,Kotlin类层次结构的根。 每个Kotlin类都有Any作为超类。相当于Java中的Object类。Any类具体介绍见《Kotlin继承》,Any超类定义如下:

/**
 * The root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass.
 */
public open class Any {
    public open operator fun equals(other: Any?): Boolean
    public open fun hashCode(): Int
    public open fun toString(): String
}



学习资料:

        Kotlin 基础语法

        Java常量:Java常量的定义和分类

        Kotlin (一) 复合符号( '?.' '?:' '!!' 'as?' '?' )


不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com