【Kotlin系列01】Kotlin快速入门:环境搭建与Hello World

引言

如果你是一位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开发环境的组成部分

在开始之前,我们需要准备:

  1. JDK(Java Development Kit) - Kotlin运行在JVM上,需要JDK
  2. IntelliJ IDEA - 最佳的Kotlin开发工具
  3. Kotlin插件 - IntelliJ IDEA Community版内置Kotlin支持

步骤1:安装JDK

Kotlin可以运行在Java 8及以上版本,推荐使用Java 11或Java 17(LTS版本)。

Windows系统

  1. 下载JDK

  2. 安装JDK

    • 双击MSI文件,按提示安装
    • 建议安装路径:C:\Program Files\Java\jdk-17
  3. 配置环境变量

    bash 复制代码
    # 打开"系统环境变量"设置
    # 新建系统变量 JAVA_HOME
    JAVA_HOME=C:\Program Files\Java\jdk-17
    
    # 编辑Path变量,添加
    %JAVA_HOME%\bin
  4. 验证安装

    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版本即可。

下载与安装

  1. 访问官网

  2. 安装IDEA

    • Windows: 运行.exe安装包,按提示安装
    • macOS: 打开.dmg文件,拖拽IDEA到Applications
    • Linux: 解压.tar.gz,运行bin/idea.sh
  3. 首次启动配置

    • 选择UI主题(Darcula深色主题或Light浅色主题)
    • 选择键盘映射(默认或类似IDE)
    • 重要: 确认Kotlin插件已安装(Community版自带)

**学生福利**: 如果你是学生,可以申请免费的Ultimate版本教育许可。访问 [JetBrains学生计划](https://www.jetbrains.com/student/) 了解详情。

步骤3:创建第一个Kotlin项目

现在让我们在IntelliJ IDEA中创建第一个Kotlin项目!

  1. 启动IDEA ,点击New Project

  2. 配置项目

    • Name: HelloKotlin
    • Location: 选择你的项目目录
    • Language: Kotlin
    • Build System: IntelliJ(对于学习最简单)
    • JDK: 选择刚才安装的JDK 17
    • Add sample code: 勾选(会自动创建Main.kt)
  3. 点击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. 函数结束

详细说明:

  1. fun main() - 程序入口点

    • fun 是Kotlin的关键字,用于声明函数(function)
    • main 是特殊的函数名,程序从这里开始执行
    • () 表示这个函数不接受参数
    • 没有指定返回类型,表示返回Unit(相当于Java的void)
  2. println("Hello World!") - 打印输出

    • println是Kotlin标准库提供的函数
    • 功能:打印文本并换行
    • "Hello World!"是字符串字面量
  3. 注意没有分号!

    • Kotlin中分号是可选的
    • 虽然加了也不报错,但约定俗成不加

运行程序

有三种方式运行程序:

方式1:点击行号旁的绿色箭头

  • fun main()这一行,会出现绿色的▶️图标
  • 点击图标,选择Run 'MainKt'

方式2:使用菜单

  • 点击顶部菜单 RunRun '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中:

  1. 点击顶部菜单 ToolsKotlinKotlin REPL
  2. 底部会出现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中,ifwhentry都是表达式,可以直接赋值给变量。

分号可选

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
  • 缩进: 使用4个空格,不使用Tab

  • 花括号: 开花括号不换行(K&R风格)

    kotlin 复制代码
    fun example() {  // 开花括号紧跟函数声明
        // 代码
    }
  • 空格使用:

    • 操作符两侧加空格:a + b
    • 逗号后加空格:fun foo(a: Int, b: Int)
    • 冒号前不加,后加:val name: String

Kotlin Playground:在线体验

如果你暂时不想安装环境,可以使用Kotlin Playground:

图片说明:Kotlin Playground在线编程环境

特点:

  • 无需安装,浏览器直接运行
  • 支持切换Kotlin版本和运行平台(JVM/JS/Native)
  • 可以分享代码链接
  • 内置大量示例

访问方式:

  1. 打开 play.kotlinlang.org/
  2. 在编辑器中输入代码
  3. 点击Run按钮
  4. 在右侧查看输出结果

这对于快速分享代码和在线演示非常有用。

常见问题解答

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学习的第一步!让我们回顾一下今天学到的内容:

核心要点

  1. Kotlin是什么:

    • JetBrains开发的现代化JVM语言
    • Android官方首选语言
    • 简洁、安全、富有表现力
    • 与Java 100%互操作
  2. 为什么选择Kotlin:

    • 代码量减少40%
    • 编译期空安全,减少80%空指针错误
    • 现代化语言特性(协程、扩展函数、DSL等)
    • 多平台支持
  3. 开发环境:

    • JDK 17+ (推荐)
    • IntelliJ IDEA Community Edition
    • Kotlin插件(IDEA自带)
  4. Hello World程序:

    kotlin 复制代码
    fun main() {
        println("Hello World!")
    }
  5. REPL工具:

    • 快速验证代码的交互式环境
    • 学习新语法的最佳工具
  6. 基本语法:

    • 分号可选
    • 几乎一切都是表达式
    • 字符串模板 "Hello $name"
    • 简洁的函数声明

下一步学习计划

现在你已经搭建好环境并运行了第一个程序,接下来我们将深入学习:

  • val vs var 的区别
  • Kotlin的基本数据类型
  • 字符串操作和模板
  • 数组和集合
  • 空安全机制详解

练习建议:

  • 在IntelliJ IDEA中创建一个新项目
  • 修改Hello World程序,输出你的姓名和学习Kotlin的目标
  • 在REPL中尝试本文的所有代码示例
  • 探索Kotlin Playground的在线示例

**学习小贴士**: 学习编程最重要的是**多练习**。不要只是看代码,一定要亲手敲一遍,运行一遍,甚至故意改错看看会发生什么。只有通过实践,才能真正理解和记住知识!

相关资源

官方资源

社区资源

学习路径


系列文章导航:

  • 👉 下一篇: [变量、数据类型与基本操作]--马上就来

如果这篇文章对你有帮助,欢迎点赞、收藏、分享!有任何问题或建议,欢迎在评论区留言讨论。让我们一起学习,一起成长!

也欢迎访问我的个人主页发现更多宝藏资源

相关推荐
君莫啸ོ10 小时前
Android 自定义View-圆圈扩散动画
android
stevenzqzq10 小时前
android启动和注入理解1
android
qq_7174100110 小时前
修改飞行模式
android
Larry_Yanan10 小时前
Qt安卓开发(一)Qt6.10环境配置
android·开发语言·c++·qt·学习·ui
冬奇Lab10 小时前
稳定性性能系列之十——卡顿问题分析:从掉帧到流畅体验
android·性能优化
stevenzqzq11 小时前
android启动初始化和注入理解2
android
DOUBLEDdinosaur11 小时前
屏幕数字监控 + 警报
android
M00668811 小时前
低代码平台使用留存的技术基础与系统设计逻辑
android·rxjava