跳过正文
  1. 文章/
  2. Kotlin/
  3. Kotlin基础/

1、Kotlin语言概述

·1840 字·4 分钟· loading · loading · ·
Kotlin Kotlin基础
GradyYoung
作者
GradyYoung
Kotlin基础 - 点击查看当前系列文章
§ 1、Kotlin语言概述 「 当前文章 」

Kotlin
#

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

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

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

为什么选择 Kotlin
#

  • 简洁: 大大减少样板代码的数量。
  • 安全: 避免空指针异常等整个类的错误。
  • 互操作性: 充分利用 JVM、Android 和浏览器的现有库。
  • 工具友好: 可用任何 Java IDE 或者使用命令行构建。
  • 提供了多种方式在多个平台间复用代码。

安装环境
#

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 文件中:

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

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

  • JVM:
    • java.lang.*
    • kotlin.jvm.*
  • JS:
    • kotlin.js.*

除了默认导入之外,每个文件可以包含它自己的导入(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

多平台项目
#

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

  • jvmMain/kotlin/Platform.jvm.kt
  • androidMain/kotlin/Platform.android.kt
  • iosMain/kotlin/Platform.ios.kt

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

命名规则
#

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

  • 包的名称总是小写且不使用下划线(org.example.project)。 通常不鼓励使用多个词的名称,但是如果确实需要使用多个词,可以将它们连接在一起或使用驼峰风格(org.example.myProject)。
  • 类与对象的名称以大写字母开头并使用驼峰风格。
  • 函数、属性与局部变量的名称以小写字母开头、使用驼峰风格而不使用下划线。
Kotlin基础 - 点击查看当前系列文章
§ 1、Kotlin语言概述 「 当前文章 」