走进新语言
- 介绍
- 环境配置
- JDK配置
- Kotlin配置
- 开发工具
- 代码基本结构
- 程序注释
介绍
Kotlin是一种现代但已经成熟的编程语言,旨在让开发人员更快乐。它简洁、安全、可与Java和其他语言互操作,并提供了许多在多个平台之间重用代码的方法。它由JetBrains公司于2011年设计和开发,并在2016年正式发布。Kotlin旨在解决Java语言在编码效率和代码质量方面存在的问题,并且与Java语言完全兼容。Kotlin通过简化语法、提供更强大的功能以及减少样板代码的编写,使得开发者能够更高效地编写清晰、简洁而又安全的代码。
Kotlin语言名字的来源是基于一个古老斯拉夫部落的名字。JetBrains开发Kotlin的初衷是为了在Android开发上取代Java,并且作为一门通用的编程语言。Kotlin通过减少样板代码和增加现代化的语言特性,提供了更好的工具和库来简化Android应用开发。由于Kotlin的设计理念和特性吸引了广泛的开发者关注,它也迅速被接受并得到了广泛的使用。现在,Kotlin已成为一门流行的编程语言,被许多开发者用于Android应用开发、服务器端开发以及其他领域的软件开发中。
官方网站:https://www.jetbrains.com/opensource/kotlin/
Kotlin 是一种现代化的静态类型编程语言,具有以下优势:
- 与Java互操作性强:Kotlin 可以与现有的 Java 代码无缝地互操作,允许开发者在现有的项目中逐步采用 Kotlin,而不需要重写整个项目。这使得 Kotlin 成为 Android 应用开发的理想选择。
- 简洁易读:Kotlin 的语法简洁并具有更好的可读性,减少了样板代码的编写。相比 Java,Kotlin 可以使用更少的代码来实现同样的功能,从而提高开发效率。
- 空安全性:Kotlin 对空值进行了更好的处理。在 Kotlin 中,变量默认是非空的,如果需要使用可能为空的值,需要显式声明类型为可空。这有助于减少空指针异常的发生。
- 函数式编程支持:Kotlin 支持函数式编程的特性,如高阶函数、lambda 表达式和函数式编程的集合操作等。这些特性可以让开发者编写更简洁、可维护的代码,并提高代码的表达能力。
- 扩展函数:Kotlin 允许开发者为某个类添加新的方法,而不需要修改该类的源代码。这种扩展函数的特性可以为开发者提供更灵活的方式来扩展现有的类库。
- 协程支持:Kotlin 引入了协程(coroutine)机制,使得异步操作更易于管理和编写。通过使用协程,开发者可以使用顺序的方式编写并发代码,并避免了回调地狱的问题。
总的来说,Kotlin 是一门功能丰富、可读性高、与 Java 无缝互操作的编程语言,适用于 Android、Web 后端开发等多种场景。
正是因为Kotlin与Java的高度兼容性,再加上简洁、安全、互操作性强等特点,让Kotlin一度成为Android开发的官方指定语言。并且随着时代的发展,现在它不仅仅可以开发安卓应用程序,也可以开发iOS程序,甚至开发Java后端、开发桌面应用程序等。其简洁高效的语法也受到一众开发者追捧。
环境配置
JDK配置
要开发Kotlin程序,我们首先需要安装Java环境,我们一般使用Kotlin都是在JVM平台上进行开发(Kotlin同样可以开发系统原生程序、JavaScript程序、安卓程序、iOS程序等)因为Java支持跨平台,能在编译后再任意平台上运行,因此,我们将JVM环境中学习Kotlin程序的开发,接下来我们要安装两个环境:
- Java 8 环境
- Kotlin 1.9.0 环境
首先我们来安装Java 8 环境,这里我们需要去下载JDK,这里推荐安装免费的ZuluJDK:https://www.azul.com/downloads/?version=java-8-lts&package=jdk
在这里选择自己的操作系统对应的安装包:
比如Windows下,我们就选择.msi
的安装包即可(MacOS、Linux下同样选择对应的即可)
选择好安装路径后,剩下的我们只需要一路点击Next即可。这种方式安装JDK会自动配置环境变量,不需要手动去配置。
安装完成之后,我们打开CMD命令窗口(MacOS下直接打开“终端”)来验证一下(要打开CMD命令窗口,Windows11可以直接在下面的搜索框搜索cmd即可,或者直接在文件资源管理器路径栏输入cmd也可以)
我们直接输入java
回车后看到图片中显示结果就代表安装成功,或者输入java -version
看到了JDK版本号也表示安装没有问题。
Kotlin配置
接着是Kotlin 1.9.0 环境,我们需要前往:https://github.com/JetBrains/kotlin/releases 下载最新的Kotlin编译器并进行安装。
将下载的压缩包解压后(解压路径自己选择),需要手动配置一下环境变量。按Win
键后直接搜索“环境变量”,双击“编辑系统环境变量”,然后在path
中新建一条内容为kotlin的安装路径\bin
的记录,然后一路点击确定即可。
最后打开CMD查看是否安装成功,输入kotlinc -version
来查看安装情况,如下图看到版本号即代表配置正确。
这样我们就完成了所有环境的安装,我们可以来体验一下编写并且编译运行一个简单的Kotlin程序,我们新建一个文本文档,命名为Main.txt
(如果没有显示后缀名,需要在文件资源管理器中开启一下)然后用记事本打开,输入以下内容:
fun main() {
println("Hello, World!")
}
编辑好之后,保存退出,接着我们将文件的后缀名称修改为.kt
,并打开CMD,注意要先进入到对应的路径下。
要编译一个Kotlin程序,我们需要使用kotlinc
命令来进行,将我们的程序编译为jar包,并包含Kotlin的运行时依赖:
kotlinc Main.kt -include-runtime -d Main.jar
执行后,可以看到目录下多出来了一个.jar
文件,这是一个打包好的标准Java程序:
接着我们就可以将其交给JVM运行了,我们直接使用java -jar
命令即可:
可以看到打印了一个 Hello World! 字样,这样我们的第一个Kotlin程序就成功运行了。
开发工具
前面我们介绍了Kotlin开发环境的安装以及成功编译运行了我们的第一个Kotlin应用程序。
但是我们发现,如果我们以后都使用记事本来进行Kotlin程序开发的话,是不是效率太低了点?我们还要先编辑,然后要改后缀,还要敲命令来编译,有没有更加方便一点的写代码的工具呢?这里我们要介绍的是:IntelliJ IDEA(这里不推荐各位小伙伴使用Eclipse,因为操作上没有IDEA这么友好)
IDEA准确来说是一个集成开发环境(IDE),它集成了大量的开发工具,编写代码的错误检测、代码提示、一键完成编译运行等,非常方便。
下载地址:IntelliJ IDEA:JetBrains 功能强大、符合人体工程学的 Java IDE
下载社区版即可,专业版是需要付费的,有条件的推荐使用专业版,它的功能更强大,体验更友好。安装完成后默认是英文界面,若想要使用中文界面,可以在Plugins里面去搜索Chinese
,下载IDEA的汉化包插件,安装完插件重启IDEA即可汉化成功。
接下来,我们来看看如何使用IDEA编写Kotlin程序,IDEA是以项目的形式对一个Java程序进行管理的,所以说我们直接创建一个新的项目,点击新建项目:
此时来到创建页面:
- 名称:你的Java项目的名称,随便起就行,尽量只带英文字母和数字,不要出现特殊字符和中文。
- 位置:项目的存放位置,可以自己根据情况修改,同样的,路径中不要出现中文。
- 语言:IDEA支持编写其他语言的项目,但是这里我们直接选择Java就行了。
- 构建系统:在JavaSE阶段一律选择IntelliJ就行了,Maven我们会在JavaWeb之后进行讲解,Gradle会在安卓开发教程中介绍。
- JDK:就是我们之前安装好的JDK,如果是默认路径安装,这里会自动识别(所以说不要随便去改,不然这些地方就很麻烦)
当然,如果JDK这里没有自动识别到,那么就手动添加一下:
没问题之后,我们直接创建项目:
进入之后,可以看到已经自动帮助我们创建好了一个kt
源文件,跟我们之前的例子是一样的。要编译运行我们的Kotlin程序,只需要直接点击左边的三角形(启动按钮)即可:
点击之后,会在下方自动开始构建:
完成之后,就可以在控制台看到输出的内容了:
我们可以看到新增加了一个out
目录,这里面就是刚刚编译好的.class
文件,这种文件是Java的字节码文件,可以直接运行在JVM中。
代码基本结构
还记得我们之前使用的示例代码吗?
fun main() {
println("Hello World!")
}
这段代码要实现的功能很简单,就是将 Hello World 这段文本信息输出到控制台。
在编写代码时,注意需要区分大小写,Kotlin语言严格区分大小写,如果我们没有按照规则来编写,那么就会出现红色波浪线报错:
只要源代码中存在报错的地方,就无法正常完成编译得到字节码文件,强行运行会提示构建失败。
注意这里包括的花括号是成对出现的,并且一一对应。
所以说各位小伙伴在编写代码时一定要注意大小写。然后第二行,准确的说是最外层花括号内部就是:
fun main() {
}
可以看到外面使用花括号前添加了fun main()
,这是我们整个程序的入口点,我们的Kotlin程序也是从这里开始从上往下执行的。而其中的println
语句就是用于打印其括号中包裹的文本,我们可以看到这个文本信息使用了""
进行囊括,否则会报错:
println("Hello World!")
这段代码的意思就是将双引号括起来的内容(字符串,我们会在后面进行讲解)输出(打印)到控制台上。
比如下面的代码,我们就可以实现先打印Hello World!,然后再打印 KFC vivo 50 到控制台:
fun main() {
println("Hello World!")
println("KFC vivo 50")
}
效果如下:
注意我们上面编写的打印语句其实是函数的调用(后续会进行讲解)不能写到同一行中,否则编译器会认为是同一句代码,同样会导致编译不通过:
如果实在要写到同一行,那么我们需要在上一句代码最后添加;
来表示上一段的结束:
再比如下面的代码:
这里我们尝试在中途换行或是添加空格,因为没有添加分号,所以说编译器依然会认为是一行代码,因此编译不会出现错误,能够正常通过。当然,为了代码写得工整和规范,我们一般不会随意换行或是添加没必要的空格。注意随意换行和空格仅限于可分割区域,比如println
本身是一个函数的完整名称,这就不能从中间直接断开,否则语义就完全不一样了。、
程序注释
我们在编写代码时,可能有些时候需要标记一下这段代码表示什么意思:
但是如果直接写上文字的话,会导致编译不通过,因为这段文字也会被认为是程序的一部分。
这种情况,我们就需要告诉编译器,这段文字是我们做的笔记,并不是程序的一部分,那么要怎么告诉编译器这不是代码呢?很简单,我们只需要在前面加上双斜杠就可以了:
添加双斜杠之后(自动变成了灰色),后续的文本内容只要没有发生换行,那么都会被认为是一段注释,并不属于程序,在编译时会被直接忽略,之后这段注释也不会存在于程序中。但是一旦发生换行那就不行了:
那要是此时注释很多,一行写不完,我们想要编写很多行的注释呢?我们可以使用多行注释标记:
多行可以使用/*
和*/
的组合来囊括需要编写的注释内容。
当然还有一种方式就是使用/**
来进行更加详细的文档注释:
这种注释可以用来自动生成文档,当我们鼠标移动到Main上时,会显示相关的信息,我们可以自由添加一些特殊的注释,比如作者、时间等信息,也可以是普通的文字信息。