引言
如果你是一位Android开发者,可能已经听说过Google在2017年宣布Kotlin成为Android官方开发语言的消息。如果你是后端开发者,可能注意到越来越多的团队开始用Kotlin重构Java项目。如果你对多平台开发感兴趣,Kotlin Multiplatform可能已经进入你的视野。
Kotlin正在成为JVM生态系统中最受欢迎的现代语言之一。根据JetBrains 2024年的开发者调查,Kotlin在JVM语言中的采用率已经超过30%,并且还在快速增长。
那么,为什么要学习Kotlin? 让我先分享一个真实的故事:
我的一位朋友在某互联网公司负责Android团队。2019年团队决定将核心模块从Java迁移到Kotlin。仅仅三个月后,他们发现:
- 代码量减少了约40% - 同样的功能,Kotlin代码更简洁
- NullPointerException减少了80% - Kotlin的空安全机制从根源上杜绝了空指针
- 开发效率提升明显 - 协程、扩展函数等特性让异步编程变得简单
- 团队满意度提高 - 开发者们普遍表示"再也不想回到Java了"
这不是个例。从Netflix到Uber,从Slack到Pinterest,越来越多的大公司选择Kotlin作为主力开发语言。
本系列文章的目标:带你从零开始系统学习Kotlin,不仅掌握语法,更要理解设计哲学和最佳实践。无论你是完全的新手,还是有Java背景的开发者,都能在这里找到适合自己的学习路径。
今天这篇文章,我们将:
- 了解Kotlin的历史和核心特性
- 对比Kotlin和Java,理解为什么要选择Kotlin
- 搭建Kotlin开发环境
- 编写第一个Kotlin程序
- 学习使用REPL快速验证代码
- 掌握Kotlin基本语法概念
让我们开始这段激动人心的旅程吧!
认识Kotlin
Kotlin的诞生与发展

图片说明:Kotlin从2011年发布到今天的发展历程
Kotlin的名字来源于俄罗斯圣彼得堡附近的Kotlin岛(Котлин),这个名字由JetBrains公司(IntelliJ IDEA的开发商)选定。让我们看看Kotlin的重要里程碑:
- 2011年7月 - JetBrains公开宣布Kotlin项目
- 2012年2月 - 开源,采用Apache 2许可证
- 2016年2月 - Kotlin 1.0正式发布,标志着生产可用
- 2017年5月 - Google宣布Kotlin成为Android官方开发语言
- 2019年5月 - Google宣布Kotlin成为Android开发首选语言(Kotlin-First)
- 2021年5月 - Kotlin 1.5发布,JVM目标字节码升级到Java 8
- 2024年11月 - Kotlin 2.0发布,带来K2编译器和重大性能提升
从这个发展历程可以看出,Kotlin已经从一个"小众语言"成长为主流的现代编程语言。
为什么选择Kotlin?
与其听我长篇大论,不如直接看代码对比。假设我们要实现一个简单的功能:创建一个Person类,包含姓名和年龄,并能打印个人信息。
Java实现:
java
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void printInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Kotlin实现:
kotlin
data class Person(val name: String, val age: Int) {
fun printInfo() {
println("Name: $name, Age: $age")
}
}
看到区别了吗?同样的功能,Java需要30多行代码,Kotlin只需要5行! 而且Kotlin的data class自动生成了:
- 构造函数
- getter方法
equals()和hashCode()方法toString()方法copy()方法(用于复制对象)
这就是Kotlin的魅力:Less is More(少即是多)。
Kotlin的核心特性
让我用一张图来展示Kotlin的核心特性:

图片说明:Kotlin的八大核心特性
1. 简洁性(Conciseness)
大幅减少样板代码(Boilerplate Code),让开发者专注于业务逻辑而非重复性代码。
2. 空安全(Null Safety)
从语言层面区分可空类型和非空类型,编译期就能捕获绝大多数空指针错误。
kotlin
var name: String = "Kotlin" // 不可为空
name = null // 编译错误!
var nullableName: String? = "Kotlin" // 可空类型
nullableName = null // 正确
3. 互操作性(Interoperability)
与Java 100%互操作,可以直接调用Java库,混合编译,平滑迁移。
4. 工具友好(Tool-Friendly)
由IntelliJ IDEA背后的公司开发,工具支持一流,智能提示、重构等功能体验极佳。
5. 现代化语言特性
- 函数式编程支持(高阶函数、Lambda表达式)
- 协程(Coroutines)用于优雅处理异步操作
- 扩展函数(Extension Functions)无需继承即可扩展类功能
- DSL构建能力
6. 多平台支持
- JVM平台 - Android和服务端开发
- JavaScript平台 - 前端开发
- Native平台 - iOS、Desktop、嵌入式系统
- Kotlin Multiplatform - 跨平台代码共享
7. 表达力强
- 操作符重载
- 中缀函数
- 字符串模板
- when表达式
8. 安全性
- 类型安全
- 编译时检查
- 不可变性优先
Kotlin vs Java - 深度对比
作为一位在Java和Kotlin都有多年经验的开发者,我整理了一个详细对比表:
| 特性 | Java | Kotlin | 说明 |
|---|---|---|---|
| 空安全 | 运行时检查,易NPE | 编译时检查 | Kotlin减少80%空指针错误 |
| 代码简洁度 | 冗长 | 简洁 | 平均减少40%代码量 |
| 函数式编程 | Java 8+支持Lambda | 原生支持,更强大 | Kotlin的高阶函数更灵活 |
| 协程 | 需要第三方库 | 原生支持 | Kotlin协程轻量级高效 |
| 扩展函数 | 不支持 | 支持 | 无需继承即可扩展类 |
| 智能类型转换 | 需手动转换 | 自动转换 | is检查后自动转型 |
| 数据类 | 需大量样板代码 | 一行搞定 | data class自动生成 |
| 默认参数 | 不支持 | 支持 | 减少方法重载 |
| 字符串模板 | 字符串拼接繁琐 | 原生支持 | "Hello $name" |
| when表达式 | switch语句受限 | 功能强大 | 支持任意表达式 |
Kotlin的应用场景
现在让我们看看Kotlin在实际项目中的应用场景:
Android开发(最广泛)
- 官方首选语言 - Google推荐Kotlin作为Android开发首选
- Jetpack Compose - 新一代UI框架完全基于Kotlin
- 协程 + LiveData/Flow - 优雅处理异步和响应式编程
服务端开发
- Spring Boot - 完美支持Kotlin
- Ktor - JetBrains开发的Kotlin原生Web框架
- Vert.x - 响应式框架Kotlin支持
多平台开发(Kotlin Multiplatform)
- 在Android、iOS、Web之间共享业务逻辑代码
- 降低维护成本,提高代码复用率
脚本和工具开发
- Gradle构建脚本(Kotlin DSL)
- 数据科学和脚本任务
搭建Kotlin开发环境
好了,理论介绍够了,让我们动手搭建开发环境!我会提供详细的步骤,确保你能顺利完成。
环境需求

图片说明:Kotlin开发环境的组成部分
在开始之前,我们需要准备:
- JDK(Java Development Kit) - Kotlin运行在JVM上,需要JDK
- IntelliJ IDEA - 最佳的Kotlin开发工具
- Kotlin插件 - IntelliJ IDEA Community版内置Kotlin支持
步骤1:安装JDK
Kotlin可以运行在Java 8及以上版本,推荐使用Java 11或Java 17(LTS版本)。
Windows系统
-
下载JDK
- 访问 Adoptium 或 Oracle JDK
- 选择Java 17(推荐)
- 下载Windows x64 MSI安装包
-
安装JDK
- 双击MSI文件,按提示安装
- 建议安装路径:
C:\Program Files\Java\jdk-17
-
配置环境变量
bash# 打开"系统环境变量"设置 # 新建系统变量 JAVA_HOME JAVA_HOME=C:\Program Files\Java\jdk-17 # 编辑Path变量,添加 %JAVA_HOME%\bin -
验证安装
bash# 打开命令提示符,执行 java -version # 应该显示: openjdk version "17.0.x"
macOS系统
bash
# 使用Homebrew安装(推荐)
brew install openjdk@17
# 创建符号链接
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk \
/Library/Java/JavaVirtualMachines/openjdk-17.jdk
# 添加到PATH(添加到 ~/.zshrc 或 ~/.bash_profile)
export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"
# 验证安装
java -version
Linux系统(Ubuntu/Debian)
bash
# 更新包列表
sudo apt update
# 安装OpenJDK 17
sudo apt install openjdk-17-jdk
# 验证安装
java -version
**推荐**: 如果你需要管理多个JDK版本,可以使用: - Windows: [Jabba](https://github.com/shyiko/jabba) 或 [SDKMAN!](https://sdkman.io/) - macOS/Linux: [SDKMAN!](https://sdkman.io/) 或 [jEnv](https://www.jenv.be/)
步骤2:安装IntelliJ IDEA
IntelliJ IDEA是由JetBrains开发的IDE,对Kotlin支持最好。有两个版本:
- Community Edition(免费) - 对于学习Kotlin已经足够
- Ultimate Edition(收费) - 提供更多企业级功能
我们使用免费的Community版本即可。
下载与安装
-
访问官网
- 打开 JetBrains官网
- 选择你的操作系统
- 下载Community Edition
-
安装IDEA
- Windows: 运行.exe安装包,按提示安装
- macOS: 打开.dmg文件,拖拽IDEA到Applications
- Linux: 解压.tar.gz,运行bin/idea.sh
-
首次启动配置
- 选择UI主题(Darcula深色主题或Light浅色主题)
- 选择键盘映射(默认或类似IDE)
- 重要: 确认Kotlin插件已安装(Community版自带)
**学生福利**: 如果你是学生,可以申请免费的Ultimate版本教育许可。访问 [JetBrains学生计划](https://www.jetbrains.com/student/) 了解详情。
步骤3:创建第一个Kotlin项目
现在让我们在IntelliJ IDEA中创建第一个Kotlin项目!
-
启动IDEA ,点击New Project
-
配置项目
- Name: HelloKotlin
- Location: 选择你的项目目录
- Language: Kotlin
- Build System: IntelliJ(对于学习最简单)
- JDK: 选择刚才安装的JDK 17
- Add sample code: 勾选(会自动创建Main.kt)
-
点击Create,等待项目创建完成
项目结构解析
创建完成后,你会看到这样的项目结构:
csharp
HelloKotlin/
├── .idea/ # IDEA配置文件目录
├── src/ # 源代码目录
│ └── main/
│ └── kotlin/
│ └── Main.kt # 主程序文件
├── out/ # 编译输出目录
└── HelloKotlin.iml # 模块配置文件
目录说明:
src/main/kotlin/- 存放Kotlin源代码out/- 编译后的字节码文件(.class).idea/- IntelliJ IDEA的项目配置
第一个Kotlin程序:Hello World
让我们看看IDEA自动创建的Main.kt文件:
kotlin
fun main() {
println("Hello World!")
}
就这么简单!仅仅3行代码,我们就完成了第一个Kotlin程序。让我们逐行解析:
代码解析
kotlin
fun main() { // 1. 声明main函数
println("Hello World!") // 2. 打印文本
} // 3. 函数结束
详细说明:
-
fun main()- 程序入口点fun是Kotlin的关键字,用于声明函数(function)main是特殊的函数名,程序从这里开始执行()表示这个函数不接受参数- 没有指定返回类型,表示返回
Unit(相当于Java的void)
-
println("Hello World!")- 打印输出println是Kotlin标准库提供的函数- 功能:打印文本并换行
"Hello World!"是字符串字面量
-
注意没有分号!
- Kotlin中分号是可选的
- 虽然加了也不报错,但约定俗成不加
运行程序
有三种方式运行程序:
方式1:点击行号旁的绿色箭头
- 在
fun main()这一行,会出现绿色的▶️图标 - 点击图标,选择Run 'MainKt'
方式2:使用菜单
- 点击顶部菜单 Run → Run 'MainKt'
方式3:使用快捷键
- Windows/Linux:
Ctrl + Shift + F10 - macOS:
Ctrl + Shift + R
运行后,你会在底部的Run窗口看到输出:
vbnet
Hello World!
Process finished with exit code 0
恭喜你!你已经成功运行了第一个Kotlin程序! 🎉
让我们稍微改进一下
现在让我们让程序更有趣一点:
kotlin
fun main() {
val name = "Kotlin"
val version = "2.0"
println("Hello $name $version!")
println("欢迎来到Kotlin的世界!")
}
新概念:
val- 声明一个只读变量(类似Java的final)$name- 字符串模板,直接在字符串中插入变量值
运行输出:
Hello Kotlin 2.0!
欢迎来到Kotlin的世界!
看到了吗?字符串模板让代码更简洁,不需要Java那样繁琐的+拼接。
使用Kotlin REPL
REPL(Read-Eval-Print Loop,读取-求值-输出循环)是一个交互式编程环境,非常适合快速验证代码片段和学习新语法。
启动REPL
在IntelliJ IDEA中:
- 点击顶部菜单 Tools → Kotlin → Kotlin REPL
- 底部会出现Kotlin REPL窗口
你也可以使用命令行REPL(需要先安装Kotlin compiler):
bash
# macOS/Linux用户可以用SDKMAN安装
sdk install kotlin
# 启动REPL
kotlinc-jvm
REPL基本使用
让我们在REPL中尝试一些代码:
kotlin
// 输入表达式,按Ctrl+Enter执行
>>> 2 + 3
5
>>> "Hello" + " " + "REPL"
Hello REPL
>>> val x = 10
>>> val y = 20
>>> x + y
30
>>> fun greet(name: String) = "Hello, $name!"
>>> greet("Kotlin")
Hello, Kotlin!
>>> (1..10).filter { it % 2 == 0 }
[2, 4, 6, 8, 10]
REPL的优势:
- ✅ 立即看到结果,无需编译
- ✅ 快速验证语法和API
- ✅ 学习新特性的最佳工具
- ✅ 调试代码片段
**学习建议**: 在学习Kotlin的过程中,遇到不确定的语法,先在REPL中试一试,比查文档更快!
REPL实战:快速计算器
让我们用REPL实现一个简单的计算器:
kotlin
>>> fun calculate(a: Int, b: Int, op: Char): Int {
return when (op) {
'+' -> a + b
'-' -> a - b
'*' -> a * b
'/' -> a / b
else -> 0
}
}
>>> calculate(10, 5, '+')
15
>>> calculate(10, 5, '*')
50
Kotlin基本语法概览
在结束本文之前,让我们快速浏览一下Kotlin的基本语法,为后续学习打下基础。
包声明和导入
kotlin
package com.example.myapp // 声明包名
import kotlin.math.* // 导入kotlin.math包的所有内容
import java.util.Date // 导入Java类
fun main() {
println(sqrt(16.0)) // 使用导入的函数
println(Date()) // 使用导入的Java类
}
说明:
- 包名通常与文件路径对应,但不强制
- 可以使用
import导入Kotlin和Java的类和函数 *表示导入包中的所有内容
语句 vs 表达式
这是Kotlin的一个重要概念:几乎一切都是表达式。
kotlin
// Java中if是语句(statement)
String result;
if (x > 0) {
result = "positive";
} else {
result = "negative";
}
// Kotlin中if是表达式(expression),有返回值
val result = if (x > 0) "positive" else "negative"
表达式与语句的区别:
- 语句(Statement): 执行操作,无返回值
- 表达式(Expression): 执行操作,有返回值
Kotlin中,if、when、try都是表达式,可以直接赋值给变量。
分号可选
kotlin
// 不需要分号
val x = 10
val y = 20
println(x + y)
// 加分号也可以,但不推荐
val a = 10;
val b = 20;
注释
kotlin
// 这是单行注释
/*
这是
多行注释
*/
/**
* 这是文档注释(KDoc)
* @param name 参数说明
* @return 返回值说明
*/
fun greet(name: String): String {
return "Hello, $name!"
}
代码风格约定
Kotlin有一套官方的代码风格指南,主要约定:
-
命名风格:
- 类名:PascalCase (大驼峰) -
PersonInfo - 函数名/变量名:camelCase (小驼峰) -
userName - 常量:SCREAMING_SNAKE_CASE -
MAX_COUNT
- 类名:PascalCase (大驼峰) -
-
缩进: 使用4个空格,不使用Tab
-
花括号: 开花括号不换行(K&R风格)
kotlinfun example() { // 开花括号紧跟函数声明 // 代码 } -
空格使用:
- 操作符两侧加空格:
a + b - 逗号后加空格:
fun foo(a: Int, b: Int) - 冒号前不加,后加:
val name: String
- 操作符两侧加空格:
Kotlin Playground:在线体验
如果你暂时不想安装环境,可以使用Kotlin Playground:

图片说明:Kotlin Playground在线编程环境
特点:
- 无需安装,浏览器直接运行
- 支持切换Kotlin版本和运行平台(JVM/JS/Native)
- 可以分享代码链接
- 内置大量示例
访问方式:
- 打开 play.kotlinlang.org/
- 在编辑器中输入代码
- 点击Run按钮
- 在右侧查看输出结果
这对于快速分享代码和在线演示非常有用。
常见问题解答
Q1: Kotlin和Java可以混合使用吗?
答: 完全可以!Kotlin与Java 100%互操作。你可以:
- 在Kotlin项目中调用Java代码
- 在Java项目中调用Kotlin代码
- 同一项目中既有
.kt文件又有.java文件
实际项目中,很多团队都是渐进式迁移,先写新功能用Kotlin,老代码保持Java,两者和平共处。
Q2: 学习Kotlin需要先学Java吗?
答: 不需要。Kotlin语法更现代、更简洁,直接学习Kotlin反而更容易。但是:
- 如果你已经会Java,学Kotlin会非常快(1-2周即可上手)
- 如果你完全没有编程经验,建议先学习编程基础概念
- 如果你会其他语言(如Python/JavaScript),学Kotlin很轻松
Q3: IntelliJ IDEA和Android Studio有什么区别?
答:
- Android Studio基于IntelliJ IDEA,专为Android开发定制
- IntelliJ IDEA是通用IDE,支持多种语言和框架
如果你是Android开发者,使用Android Studio;如果是后端或多平台开发,使用IntelliJ IDEA。两者的Kotlin支持几乎一致。
Q4: Kotlin的性能如何?
答:
- Kotlin编译成JVM字节码,运行时性能与Java相同
- 某些特性(如inline函数)甚至可以优化性能
- 协程比Java线程更轻量级,性能更好
- 唯一需要注意的是编译速度,Kotlin编译比Java稍慢,但Kotlin 2.0的K2编译器已大幅改进
Q5: 学习Kotlin需要多长时间?
答: 取决于你的背景:
- 有Java经验: 1-2周掌握基础,1-2个月熟练
- 有其他语言经验: 2-4周掌握基础,2-3个月熟练
- 零基础: 1-2个月掌握基础,3-6个月熟练
本系列文章会带你系统学习,跟着练习,进步会很快!
总结
恭喜你完成了Kotlin学习的第一步!让我们回顾一下今天学到的内容:
核心要点
-
Kotlin是什么:
- JetBrains开发的现代化JVM语言
- Android官方首选语言
- 简洁、安全、富有表现力
- 与Java 100%互操作
-
为什么选择Kotlin:
- 代码量减少40%
- 编译期空安全,减少80%空指针错误
- 现代化语言特性(协程、扩展函数、DSL等)
- 多平台支持
-
开发环境:
- JDK 17+ (推荐)
- IntelliJ IDEA Community Edition
- Kotlin插件(IDEA自带)
-
Hello World程序:
kotlinfun main() { println("Hello World!") } -
REPL工具:
- 快速验证代码的交互式环境
- 学习新语法的最佳工具
-
基本语法:
- 分号可选
- 几乎一切都是表达式
- 字符串模板
"Hello $name" - 简洁的函数声明
下一步学习计划
现在你已经搭建好环境并运行了第一个程序,接下来我们将深入学习:
valvsvar的区别- Kotlin的基本数据类型
- 字符串操作和模板
- 数组和集合
- 空安全机制详解
练习建议:
- 在IntelliJ IDEA中创建一个新项目
- 修改Hello World程序,输出你的姓名和学习Kotlin的目标
- 在REPL中尝试本文的所有代码示例
- 探索Kotlin Playground的在线示例
**学习小贴士**: 学习编程最重要的是**多练习**。不要只是看代码,一定要亲手敲一遍,运行一遍,甚至故意改错看看会发生什么。只有通过实践,才能真正理解和记住知识!
相关资源
官方资源
- Kotlin官方文档 - 最权威的学习资料
- Kotlin Koans - 互动式编程练习
- Kotlin Playground - 在线编程环境
社区资源
- Kotlin中文社区 - 中文文档和社区
- Kotlin Slack - 官方Slack频道
- Reddit /r/Kotlin - Reddit讨论区
学习路径
- Kotlin By Example - 通过示例学习
- JetBrains Academy - Kotlin Track - 系统化课程
系列文章导航:
- 👉 下一篇: [变量、数据类型与基本操作]--马上就来
如果这篇文章对你有帮助,欢迎点赞、收藏、分享!有任何问题或建议,欢迎在评论区留言讨论。让我们一起学习,一起成长!
也欢迎访问我的个人主页发现更多宝藏资源