大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
基础语法与类型
Kotlin 语法比 Java 更简洁:val/var 替代类型声明,when 替代复杂 switch,字符串模板内置。类型系统与 Java 基本对应,但默认不可空。
学习目标
- 掌握
val(只读)与var(可变)的声明与类型推断 - 理解基本类型、字符串模板与多行字符串
- 熟悉类型转换与智能转换(smart cast)
变量与类型推断
fun main() {
val name: String = "CodeRoadMap" // 只读,不可重新赋值
var count = 0 // 类型推断为 Int
count += 1
val pi = 3.14159 // Double
val active = true // Boolean
println("$name has $count lessons")
}
val 类似 Java 的 final;var 类似普通局部变量。顶层 val 是编译期常量。
基本类型
| 类别 | Kotlin | Java 对应 |
|---|---|---|
| 整数 | Int、Long、Short、Byte | int、long 等 |
| 浮点 | Float、Double | float、double |
| 字符 | Char | char |
| 布尔 | Boolean | boolean |
Kotlin 基本类型在 JVM 上映射为 Java 原始类型(可空时装箱)。
字符串模板
val slug = "kotlin-essentials"
val title = "Kotlin 语言入门"
// 简单插值
println("Track: $slug")
// 表达式插值
println("Full: ${slug.replace("-", " ")}")
// 多行字符串
val sql = """
SELECT slug, title
FROM cf_lesson
WHERE track_slug = '$slug'
""".trimIndent()
println(sql)
三引号 """ 保留换行,.trimIndent() 去除公共缩进。
类型转换
fun describe(value: Any) {
when (value) {
is String -> println("长度: ${value.length}") // 智能转换为 String
is Int -> println("平方: ${value * value}")
else -> println("未知类型")
}
}
fun main() {
describe("hello")
describe(42)
val x: Int = 10
val y: Long = x.toLong() // 必须显式转换,无隐式 widening
}
is 检查后编译器自动 smart cast,无需 (String) value 强转。
与 Java 对照
| Kotlin | Java |
|---|---|
val x = 1 | final int x = 1 |
var s: String? | @Nullable String s |
"$name" | String.format("%s", name) |
x.toLong() | (long) x |
when (x) { is T -> ... } | instanceof + cast |
练习
- 用字符串模板打印 track slug 与 lesson 数量
- 写多行字符串模拟 SQL 查询
- 用
when+is判断Any类型并打印不同信息
小结
val/var + 类型推断 + 字符串模板是 Kotlin 日常高频特性。 下一课控制流。见 kotlin-essentials。