1、Kotlin语言概述

Kotlin

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。

为什么选择 Kotlin

安装环境

IDE

Kotlin 已包含在每个IntelliJ IDEAAndroid Studio版本中了。

可下载并安装这两个 IDE 之一来开始使用 Kotlin。

Hello World

package top.ygang.kotlindemo

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

基础语法

包的定义和导入

在之前,无论我们创建的是Kotlin源文件还是Kotlin类文件,都是在默认的包下进行的,也就是直接在kotlin/src目录创建的。

但是有些时候,我们可能希望将一些模块按功能进行归类,而不是所有的kt文件都挤在一起,这个时候我们就需要用到包了,也就是在kotlin/src目录中创建的子目录。

所有不直接在默认包目录中的kt文件,必须在顶部声明所属的包,比如Test.kt放在kotlin/com/test这个包中,因此顶部必须使用package关键字进行包声明package com.test

当我们使用其他包中kt文件定义的类或函数时,会直接提示未解析的引用,这是因为默认情况下只有同包内的内容可以相互使用,而现在我们使用的是其他包中的内容,我们需要先进行导入操作import com.test.Userimport com.test.myFunc

这样,我们在导入之后就可以正常使用了,当然,如果一个包中定义的内容太多,我们需要大量使用,也可以使用*一次性导入全部内容import com.test.*

定义

package org.example

fun printMessage() { /*……*/ }
class Message { /*……*/ }

kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。

源文件所有内容(无论是类还是函数)都包含在该包内。 所以上例中 printMessage() 的全名是 org.example.printMessage, 而 Message 的全名是 org.example.Message

如果没有指定包,默认为default包。

导入

有多个包会默认导入到每个 Kotlin 文件中:

根据目标平台还会导入额外的包:

除了默认导入之外,每个文件可以包含它自己的导入(import)指令。

可以导入一个单个名称:

import org.example.Message // 现在 Message 可以不用限定符访问

也可以导入一个作用域下的所有内容:包、类、对象等:

import org.example.* // “org.example”中的一切都可访问

如果出现名字冲突,可以使用 as 关键字在本地重命名冲突项来消歧义:

import org.example.Message // Message 可访问
import org.test.Message as TestMessage // TestMessage 代表“org.test.Message”

关键字 import 并不仅限于导入类;也可用它来导入其他声明:

程序入口

Kotlin 应用程序的入口点是 main 函数:

fun main() {
    println("Hello world!")
}

main 的另一种形式接受可变数量的 String 参数:

fun main(args: Array<String>) {
    println(args.contentToString())
}

注释

// 单行注释

/**
 * 文档注释
 */

/*
 * 多行注释
 */

编码规范

目录结构

在纯 Kotlin 项目中,推荐的目录结构遵循省略了公共根包的包结构。例如,如果项目中的所有代码都位于 org.example.kotlin 包及其子包中,那么 org.example.kotlin 包的文件应该直接放在源代码根目录下,而 org.example.kotlin.network.socket 中的文件应该放在源代码根目录下的 network/socket 子目录中。

源文件名称

如果 Kotlin 文件包含单个类或接口(以及可能相关的顶层声明),那么文件名应该与该类的名称相同,并追加 .kt 扩展名。 这适用于所有类型的类和接口。 如果文件包含多个类或只包含顶层声明, 那么选择一个描述该文件所包含内容的名称,并以此命名该文件。 使用首字母大写的驼峰风格(也称为 Pascal 风格), 例如 ProcessDeclarations.kt

多平台项目

在多平台项目中,平台特有的源代码集中包含顶层声明的文件应具有与该源代码集名称相关联的后缀。 例如:

对于公共源代码集,包含顶层声明的文件不应该有后缀。 例如,commonMain/kotlin/Platform.kt.

命名规则

在 Kotlin 中,包名与类名的命名规则非常简单: