这是一个针对初学者的 Kotlin 编程语言简介。无论你是有其他编程语言基础,还是完全的新手,这份指南都将帮助你快速了解 Kotlin 的核心特性和魅力。
1. 什么是 Kotlin?
Kotlin 是一种由 JetBrains 公司开发的现代、简洁、安全的静态类型编程语言。它运行在 Java 虚拟机(JVM)上,因此可以与现有的 Java 代码和库 100% 互操作。
它的主要设计目标是:
- 简洁: 大幅减少样板代码,让开发者更专注于逻辑本身。
- 安全: 设计上尽量避免空指针异常等常见错误。
- 互操作性: 与 Java 的完美互通是其成功的关键。
- 工具友好: JetBrains 提供了出色的 IDE(如 IntelliJ IDEA)支持。
2. 为什么选择 Kotlin?
- 官方推荐的 Android 开发语言: 自 2019 年 Google I/O 以来,Kotlin 已成为 Android 移动开发的首选语言。
- 多平台能力: 通过 Kotlin Multiplatform,你可以使用 Kotlin 开发 Android、iOS(共享逻辑)、Web 前端、后端服务器,甚至原生桌面应用。
- 更高的开发效率: 语法简洁,表达力强,写更少的代码,完成更多的工作。
- 更少的错误: 例如,其类型系统旨在从代码中消除空指针异常。
3. 核心语法和特性入门
让我们通过一些代码示例来感受 Kotlin 的简洁与强大。
a) 你好,世界!
与 Java 相比,Kotlin 的入口函数非常简单。
fun main() {
println("Hello, World!")
}
fun: 关键字,用于声明函数。- 不需要将代码放在一个类里(虽然也可以)。
- 不需要分号
;。
b) 变量声明
Kotlin 使用两个关键字来声明变量:val 和 var。
fun main() {
// val (value) - 声明只读变量,相当于常量,赋值后不可修改。
val name = "Alice" // 类型被推断为 String
val age: Int = 25 // 显式声明类型为 Int
// name = "Bob" // 错误:Val cannot be reassigned
// var (variable) - 声明可变变量。
var score = 90
score = 100 // 正确:可以重新赋值
}
最佳实践: 优先使用 val,除非你真的需要改变这个变量。这能使代码更可靠、更易于推理。
c) 空安全
这是 Kotlin 最著名的安全特性。
fun main() {
// 普通变量不能为 null
var neverNull: String = "This cannot be null"
// neverNull = null // 编译错误!
// 如果要允许为 null,必须在类型后加上 ?
var canBeNull: String? = "You can set this to null"
canBeNull = null // 这是允许的
// 安全调用操作符 ?.
val length: Int? = canBeNull?.length
// 如果 canBeNull 为 null,则整个表达式结果为 null,不会抛出异常。
// Elvis 操作符 ?: (提供默认值)
val lengthOrZero: Int = canBeNull?.length ?: 0
// 如果 ?. 左边的结果为 null,则使用 ?: 右边的默认值(0)。
}
这从根本上减少了 NullPointerException 的发生。
d) 函数
Kotlin 中的函数非常灵活。
// 1. 基本函数
fun sum(a: Int, b: Int): Int {
return a + b
}
// 2. 表达式函数体(单表达式函数可以省略大括号和 return)
fun sumShort(a: Int, b: Int) = a + b
// 3. 默认参数和命名参数
fun greet(name: String, msg: String = "Hello") {
println("$msg, $name!")
}
fun main() {
greet("Alice") // 输出:Hello, Alice!
greet("Bob", "Hi") // 输出:Hi, Bob!
greet(msg = "Hey", name = "Carol") // 使用命名参数,顺序可以打乱
}
e) 条件表达式
Kotlin 的 if 和 when 不仅仅是语句,它们还可以返回值。
fun max(a: Int, b: Int): Int {
// if 是一个表达式,有返回值
return if (a > b) a else b
}
fun describe(obj: Any): String {
// when 类似于 Java 的 switch,但强大得多
return when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long type"
!is String -> "Not a string"
else -> "Unknown"
}
}
f) 数据类
当你需要一个只用于保存数据的类时,Kotlin 提供了 data class,它可以自动生成 equals(), hashCode(), toString(), copy() 等标准方法。
// Java 中可能需要几十行代码,这里只需一行。
data class User(val name: String, val age: Int)
fun main() {
val user = User("Alice", 25)
println(user) // 输出:User(name=Alice, age=25)
// 解构声明
val (userName, userAge) = user
println("$userName is $userAge years old") // 输出:Alice is 25 years old
// 复制(常用于创建修改后的副本,原对象不变)
val olderUser = user.copy(age = 26)
println(olderUser) // 输出:User(name=Alice, age=26)
}
4. 与 Java 的互操作性
这是 Kotlin 的杀手级特性。你可以在 Kotlin 项目中直接调用 Java 代码,反之亦然。
在 Kotlin 中调用 Java:
// Java 类:JavaPerson.java
public class JavaPerson {
private String name;
public JavaPerson(String name) { this.name = name; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
// Kotlin 代码中
fun main() {
val javaPerson = JavaPerson("John")
println(javaPerson.name) // 可以直接像 Kotlin 属性一样访问 getter/setter
}
在 Java 中调用 Kotlin:
// Kotlin 类:KotlinUser.kt
data class KotlinUser(val name: String, val age: Int) {
fun greet() = println("Hi, I'm $name")
}
// Java 代码中
public class Main {
public static void main(String[] args) {
KotlinUser user = new KotlinUser("Jane", 30);
System.out.println(user); // 调用自动生成的 toString
user.greet(); // 调用 Kotlin 函数
}
}
这种无缝的互操作性使得在现有 Java 项目中逐步引入 Kotlin 变得非常容易。
5. 学习路径建议
- 环境搭建: 安装 IntelliJ IDEA Community Edition(免费),它提供了对 Kotlin 最完美的支持。
- 基础语法: 熟练掌握变量、函数、控制流(if/when/for/while)、类和对象。
- 关键特性: 深入理解空安全、扩展函数、Lambda 表达式和高阶函数(这是 Kotlin 函数式编程的核心)。
- 实践项目: 尝试用 Kotlin 写一个简单的 Android App、一个命令行工具或一个 Spring Boot 后端服务。
总结
Kotlin 是一门设计精良的语言,它吸收了众多编程语言的优点,在保持强大表达能力的同时,极大地提升了开发效率和代码安全性。它的“务实”特性(如与 Java 的互操作)使其在工业界迅速普及。
无论你的目标是 Android 开发、后端开发还是跨平台开发,Kotlin 都是一个绝佳的选择。

778

被折叠的 条评论
为什么被折叠?



