Kotlin 基础语法(深入浅出)

Kotlin 基础语法入门:从零开始构建你的第一行代码

如果你正在学习现代编程语言,Kotlin 一定已经出现在你的视线中。作为 Android 官方推荐的开发语言,Kotlin 不仅简洁优雅,还极大提升了开发效率。尤其对于初学者来说,Kotlin 基础语法的学习曲线平缓,却能快速上手实用功能。

Kotlin 基础语法的设计哲学是“让代码更少,更清晰”。它融合了函数式编程和面向对象编程的优点,同时避免了 Java 中常见的冗长写法。比如,声明一个变量只需要 valvar,而不需要写 intString 这样的类型关键字(类型可自动推断)。这种设计让代码更像“自然语言”,读起来更直观。

在接下来的内容中,我会带你一步步掌握 Kotlin 基础语法的核心要素。不需要你有深厚背景,只需一点耐心,你就能写出可运行、可维护的 Kotlin 代码。


变量声明与数据类型

在 Kotlin 中,变量的声明方式与 Java 有本质不同。Kotlin 鼓励使用 val(不可变)和 var(可变)来区分变量是否可更改。这就像给变量贴上了“是否允许修改”的标签,帮助你从一开始就养成良好的编程习惯。

val name = "张三"        // val 声明不可变变量,相当于 final
var age = 25             // var 声明可变变量,值可以更改
age = 26                 // ✅ 合法:age 可变,可以重新赋值
// name = "李四"        // ❌ 错误:val 变量不能重新赋值

注释val 类似于 Java 中的 final,一旦赋值就不能再改。var 则允许后续修改。推荐优先使用 val,除非确实需要改变值。

Kotlin 支持常见的基本数据类型,如 IntDoubleBooleanString 等。类型通常可以自动推断,但也可以显式声明:

val score: Double = 98.5      // 显式声明类型为 Double
val isPassed: Boolean = true   // 布尔类型,用于逻辑判断
val message: String = "Hello"  // 字符串类型

注释:Kotlin 的类型系统非常安全。如果你尝试将字符串赋给整型变量,编译器会直接报错,而不是运行时崩溃。


函数定义与调用

函数是代码复用的核心。Kotlin 的函数语法非常简洁,使用 fun 关键字定义。

fun greet(name: String): String {
    return "你好,$name!欢迎来到 Kotlin 世界。"
}

// 调用函数
val result = greet("小王")
println(result)  // 输出:你好,小王!欢迎来到 Kotlin 世界。

注释fun 后跟函数名,参数列表写在括号里,: 后面是返回类型。return 是可选的,如果函数体只有一行表达式,可以省略 return

Kotlin 支持表达式作为函数体,即无需显式写 return

fun add(a: Int, b: Int) = a + b  // 简洁写法:直接返回表达式结果

val sum = add(3, 5)
println(sum)  // 输出:8

注释:这种写法称为“表达式函数”,适用于逻辑简单的函数。它让代码更紧凑,也更易读。


条件判断与控制流

Kotlin 的 if 表达式比 Java 更强大。它不仅是一个语句,更是一个表达式,可以返回值。

val score = 85
val grade = if (score >= 90) {
    "A"
} else if (score >= 80) {
    "B"
} else if (score >= 70) {
    "C"
} else {
    "D"
}

println("你的成绩是:$grade")  // 输出:你的成绩是:B

注释:Kotlin 的 if 块可以作为表达式返回值,因此可以在变量声明中直接使用。这在 Java 中是做不到的。

此外,Kotlin 还引入了 when 表达式,它是 switch 的升级版,功能更强,更安全。

val day = 3
val description = when (day) {
    1 -> "星期一"
    2 -> "星期二"
    3 -> "星期三"
    4 -> "星期四"
    5 -> "星期五"
    6, 7 -> "周末"  // 多个值可以合并
    else -> "无效输入"
}

println(description)  // 输出:星期三

注释when 支持范围匹配(如 in 1..7)、类型判断、甚至可以作为表达式返回值。它比 Java 的 switch 更灵活,也更少出错。


循环结构:for 与 while

Kotlin 提供了 forwhile 两种循环结构,其中 for 的写法更贴近现代语言习惯。

遍历集合

val numbers = listOf(1, 2, 3, 4, 5)

for (num in numbers) {
    println("当前数字:$num")
}

注释in 是 Kotlin 的关键词,用于判断元素是否在集合中。这种写法类似 Python 的 for item in list,非常直观。

数值循环

// 从 1 到 5(包含)
for (i in 1..5) {
    print("$i ")
}
// 输出:1 2 3 4 5

// 从 1 到 5,步长为 2
for (i in 1..5 step 2) {
    print("$i ")
}
// 输出:1 3 5

// 从 5 到 1(倒序)
for (i in 5 downTo 1) {
    print("$i ")
}
// 输出:5 4 3 2 1

注释.. 表示范围,step 指定步长,downTo 实现倒序。这些语法让数字循环变得非常灵活。

while 循环

var count = 0
while (count < 3) {
    println("循环次数:$count")
    count++
}

注释while 的语法与 Java 一致,但 Kotlin 更鼓励使用 for 循环,因为它更安全、更易读。


创建数组与初始化

数组是存储多个相同类型数据的容器。Kotlin 提供了多种方式创建和操作数组。

// 创建一个整型数组
val numbers = arrayOf(1, 2, 3, 4, 5)

// 创建一个空数组,指定类型
val emptyArray = arrayOfNulls<String>(3)  // 创建长度为 3 的 String 数组,初始值为 null

// 使用数组构建器
val squares = Array(5) { i -> i * i }  // 创建 5 个元素,每个元素为 i 的平方
println(squares.contentToString())  // 输出:[0, 1, 4, 9, 16]

注释arrayOf 用于创建具体值的数组;arrayOfNulls 用于创建可空数组;Array 构造函数接受长度和一个 lambda,用于按需生成每个元素。

数组遍历与操作

val fruits = arrayOf("苹果", "香蕉", "橙子")

// 使用 for 循环遍历
for (fruit in fruits) {
    println("水果:$fruit")
}

// 使用高阶函数 filter 和 map
val longFruits = fruits.filter { it.length > 2 }
val upperFruits = fruits.map { it.uppercase() }

println(longFruits)   // 输出:[苹果, 香蕉, 橙子]
println(upperFruits)  // 输出:[苹果, 香蕉, 橙子]

注释filter 用于筛选元素,map 用于转换元素。这些高阶函数是 Kotlin 的亮点,让数据处理更简洁。


类与对象:面向对象的基石

Kotlin 的类语法简洁,且默认是 public,无需额外修饰。

class Person(val name: String, var age: Int) {
    // 主构造函数中直接声明属性
    fun introduce() {
        println("我是 $name,今年 $age 岁。")
    }

    fun haveBirthday() {
        age++
        println("$name 生日快乐!现在 $age 岁了。")
    }
}

// 创建对象
val person = Person("小李", 20)
person.introduce()        // 输出:我是 小李,今年 20 岁。
person.haveBirthday()     // 输出:小李 生日快乐!现在 21 岁了。

注释valvar 在构造函数参数中直接声明为类属性,省去了 this.name = name 的冗余代码。

数据类(data class)

当你需要一个“只存数据”的类时,Kotlin 提供了 data class,它会自动生成 equalshashCodetoString 等方法。

data class Student(val id: Int, val name: String, val score: Double)

val student = Student(101, "小红", 95.5)
println(student)  // 输出:Student(id=101, name=小红, score=95.5)
println(student.copy(score = 98.0))  // 复制并修改 score

注释data class 适用于 DTO(数据传输对象),极大减少样板代码。


总结

Kotlin 基础语法的优雅之处,在于它用极简的写法实现了强大的功能。从变量声明到函数定义,从控制流到面向对象,每一个设计都围绕“减少冗余、提升可读性”展开。

无论你是刚接触编程的新手,还是已有 Java 经验的开发者,Kotlin 都能让你在短时间内写出更清晰、更安全的代码。它不是“另一种 Java”,而是对现代编程理念的一次成功实践。

掌握 Kotlin 基础语法,是你迈向高效开发的第一步。从今天开始,用更少的代码,表达更多的逻辑。