Kotlin第一阶段学习内容详情
Kotlin 第一阶段学习内容详情:基础语法
本阶段目标是熟悉 Kotlin 最基础、最常用的语法。学完后,你应该能独立写出简单的命令行程序,比如成绩判断、循环统计、猜数字小游戏。
建议用时:3-5 天。
阶段目标
- 能区分并正确使用
val和var。 - 掌握 Kotlin 常见基本类型。
- 能使用字符串模板拼接输出内容。
- 能使用
if和when完成条件判断。 - 能使用
for、while、区间完成循环。 - 能写出 3 个以上小程序巩固基础语法。
学习前准备
请先确认你能运行下面的代码:
fun main() {
println("Hello, Kotlin!")
}
如果这段代码能正常输出 Hello, Kotlin!,就可以开始第一阶段。
第 1 天:变量与基本类型
1. 变量声明
Kotlin 使用 val 和 var 声明变量。
| 关键字 | 含义 | 是否可以重新赋值 | 使用建议 |
|---|---|---|---|
val |
只读变量 | 否 | 优先使用 |
var |
可变变量 | 是 | 只有确实需要修改时使用 |
示例:
fun main() {
val name = "Alice"
var age = 18
age = 19
println(name)
println(age)
}
下面这样会报错,因为 val 声明后不能重新赋值:
fun main() {
val name = "Alice"
name = "Bob" // 错误:val 不能重新赋值
}
2. 类型推断
Kotlin 可以根据赋值自动推断变量类型。
val age = 18 // Int
val price = 9.99 // Double
val name = "Tom" // String
val isVip = true // Boolean
也可以显式写出类型:
val age: Int = 18
val price: Double = 9.99
val name: String = "Tom"
val isVip: Boolean = true
初学时建议多写几次显式类型,熟悉后再依赖类型推断。
3. 常见基本类型
| 类型 | 说明 | 示例 |
|---|---|---|
Int |
整数 | 18 |
Long |
长整数 | 10000000000L |
Double |
小数 | 3.14 |
Float |
单精度小数 | 3.14F |
Boolean |
布尔值 | true、false |
Char |
单个字符 | 'A' |
String |
字符串 | "Kotlin" |
示例:
fun main() {
val score: Int = 95
val distance: Long = 10000000000L
val price: Double = 19.99
val passed: Boolean = true
val level: Char = 'A'
val language: String = "Kotlin"
println(score)
println(distance)
println(price)
println(passed)
println(level)
println(language)
}
第 1 天练习
- 声明姓名、年龄、身高、是否学生,并打印出来。
- 使用
val声明一个城市名,尝试重新赋值,观察报错。 - 使用
var声明库存数量,模拟库存减少。
参考答案:
fun main() {
val name = "小明"
var age = 20
val height = 1.75
val isStudent = true
println("姓名:$name")
println("年龄:$age")
println("身高:$height")
println("是否学生:$isStudent")
var stock = 10
stock = stock - 1
println("剩余库存:$stock")
}
第 2 天:字符串与运算符
1. 字符串模板
Kotlin 推荐使用字符串模板,而不是用 + 拼接字符串。
fun main() {
val name = "Alice"
val age = 20
println("姓名:$name,年龄:$age")
}
如果模板中是表达式,需要使用 ${}。
fun main() {
val price = 20
val count = 3
println("总价:${price * count}")
}
2. 多行字符串
使用三引号 """ 可以声明多行字符串。
fun main() {
val message = """
学习计划:
1. 学习变量
2. 学习条件判断
3. 学习循环
""".trimIndent()
println(message)
}
3. 算术运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
+ |
加法 | a + b |
- |
减法 | a - b |
* |
乘法 | a * b |
/ |
除法 | a / b |
% |
取余 | a % b |
示例:
fun main() {
val a = 10
val b = 3
println(a + b)
println(a - b)
println(a * b)
println(a / b)
println(a % b)
}
注意:两个整数相除,结果仍然是整数。
fun main() {
println(10 / 3) // 输出 3
println(10.0 / 3) // 输出 3.3333333333333335
}
4. 比较运算符
| 运算符 | 含义 |
|---|---|
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
== |
值相等 |
!= |
值不相等 |
示例:
fun main() {
val score = 85
println(score >= 60)
println(score == 100)
println(score != 0)
}
5. 逻辑运算符
| 运算符 | 含义 |
|---|---|
&& |
并且 |
| ` | |
! |
取反 |
示例:
fun main() {
val age = 20
val hasTicket = true
val canEnter = age >= 18 && hasTicket
println(canEnter)
}
第 2 天练习
- 定义商品单价和购买数量,计算总价。
- 判断一个数字是否为偶数。
- 判断一个用户是否可以进入影院:年龄大于等于 18,并且有票。
参考答案:
fun main() {
val price = 30
val count = 4
val total = price * count
println("总价:$total")
val number = 12
println("是否为偶数:${number % 2 == 0}")
val age = 19
val hasTicket = true
val canEnter = age >= 18 && hasTicket
println("是否可以进入影院:$canEnter")
}
第 3 天:条件判断
1. if 判断
基础写法:
fun main() {
val score = 80
if (score >= 60) {
println("及格")
} else {
println("不及格")
}
}
多个条件:
fun main() {
val score = 85
if (score >= 90) {
println("优秀")
} else if (score >= 80) {
println("良好")
} else if (score >= 60) {
println("及格")
} else {
println("不及格")
}
}
2. if 作为表达式
Kotlin 中的 if 可以返回结果。
fun main() {
val score = 75
val result = if (score >= 60) "及格" else "不及格"
println(result)
}
3. when 判断
when 类似 Java 或 C 语言中的 switch,但更强大。
fun main() {
val level = "A"
when (level) {
"A" -> println("优秀")
"B" -> println("良好")
"C" -> println("及格")
else -> println("未知等级")
}
}
4. when 作为表达式
fun main() {
val level = "B"
val description = when (level) {
"A" -> "优秀"
"B" -> "良好"
"C" -> "及格"
else -> "未知等级"
}
println(description)
}
5. when 判断范围
fun main() {
val score = 88
val result = when (score) {
in 90..100 -> "优秀"
in 80..89 -> "良好"
in 60..79 -> "及格"
in 0..59 -> "不及格"
else -> "分数无效"
}
println(result)
}
第 3 天练习
- 输入一个年龄,判断是儿童、青少年、成年人还是老年人。
- 输入一个月份,判断属于哪个季节。
- 输入一个成绩,输出等级:优秀、良好、及格、不及格。
参考答案:
fun main() {
val age = 20
val ageGroup = when (age) {
in 0..12 -> "儿童"
in 13..17 -> "青少年"
in 18..59 -> "成年人"
in 60..120 -> "老年人"
else -> "年龄无效"
}
println(ageGroup)
val month = 4
val season = when (month) {
in 3..5 -> "春季"
in 6..8 -> "夏季"
in 9..11 -> "秋季"
12, 1, 2 -> "冬季"
else -> "月份无效"
}
println(season)
}
第 4 天:循环与区间
1. 区间
Kotlin 中的区间很常用。
fun main() {
println(1..5)
}
常见区间写法:
| 写法 | 含义 | 结果 |
|---|---|---|
1..5 |
从 1 到 5,包含 5 | 1、2、3、4、5 |
1 until 5 |
从 1 到 5,不包含 5 | 1、2、3、4 |
5 downTo 1 |
从 5 到 1 | 5、4、3、2、1 |
1..10 step 2 |
每次增加 2 | 1、3、5、7、9 |
2. for 循环
fun main() {
for (i in 1..5) {
println(i)
}
}
倒序循环:
fun main() {
for (i in 5 downTo 1) {
println(i)
}
}
步长循环:
fun main() {
for (i in 1..10 step 2) {
println(i)
}
}
遍历字符串:
fun main() {
val text = "Kotlin"
for (char in text) {
println(char)
}
}
3. while 循环
先判断条件,再执行循环体。
fun main() {
var count = 1
while (count <= 5) {
println(count)
count++
}
}
4. do-while 循环
先执行一次循环体,再判断条件。
fun main() {
var count = 1
do {
println(count)
count++
} while (count <= 5)
}
5. break 与 continue
break 用于结束整个循环。
fun main() {
for (i in 1..10) {
if (i == 5) {
break
}
println(i)
}
}
continue 用于跳过本次循环,继续下一次循环。
fun main() {
for (i in 1..10) {
if (i % 2 == 0) {
continue
}
println(i)
}
}
第 4 天练习
- 输出 1-100 的所有数字。
- 计算 1-100 的和。
- 输出 1-100 的所有偶数。
- 输出字符串
"Kotlin"中的每一个字符。 - 找出 1-100 中第一个能被 7 整除的数字。
参考答案:
fun main() {
var sum = 0
for (i in 1..100) {
sum += i
}
println("1-100 的和:$sum")
for (i in 1..100) {
if (i % 2 == 0) {
println(i)
}
}
for (char in "Kotlin") {
println(char)
}
for (i in 1..100) {
if (i % 7 == 0) {
println("第一个能被 7 整除的数字:$i")
break
}
}
}
第 5 天:综合练习
这一天不用学太多新语法,重点是把前 4 天内容串起来。
综合练习 1:成绩等级判断
要求:
- 定义一个成绩变量
score。 - 如果成绩为 90-100,输出「优秀」。
- 如果成绩为 80-89,输出「良好」。
- 如果成绩为 60-79,输出「及格」。
- 如果成绩为 0-59,输出「不及格」。
- 其他情况输出「成绩无效」。
参考答案:
fun main() {
val score = 86
val result = when (score) {
in 90..100 -> "优秀"
in 80..89 -> "良好"
in 60..79 -> "及格"
in 0..59 -> "不及格"
else -> "成绩无效"
}
println("成绩:$score,等级:$result")
}
综合练习 2:奇偶统计
要求:
- 遍历 1-100。
- 统计奇数个数。
- 统计偶数个数。
- 分别输出结果。
参考答案:
fun main() {
var oddCount = 0
var evenCount = 0
for (i in 1..100) {
if (i % 2 == 0) {
evenCount++
} else {
oddCount++
}
}
println("奇数个数:$oddCount")
println("偶数个数:$evenCount")
}
综合练习 3:猜数字小游戏
要求:
- 设定一个答案数字。
- 设定一个用户猜测数字。
- 如果猜大了,输出「猜大了」。
- 如果猜小了,输出「猜小了」。
- 如果猜对了,输出「猜对了」。
基础版参考答案:
fun main() {
val answer = 42
val guess = 35
if (guess > answer) {
println("猜大了")
} else if (guess < answer) {
println("猜小了")
} else {
println("猜对了")
}
}
循环版参考答案:
fun main() {
val answer = 42
val guesses = listOf(20, 60, 42)
for (guess in guesses) {
println("本次猜测:$guess")
if (guess > answer) {
println("猜大了")
} else if (guess < answer) {
println("猜小了")
} else {
println("猜对了")
break
}
}
}
这里用到了 listOf(),它属于集合内容。你现在只需要知道它可以临时保存一组数字,后面会系统学习。
本阶段必须掌握的语法清单
完成第一阶段后,请逐项检查。
常见错误
1. 把 val 当成可变变量
错误写法:
val count = 1
count = 2
正确写法:
var count = 1
count = 2
2. 字符串模板表达式忘记加 {}
错误写法:
val price = 10
val count = 2
println("总价:$price * count")
正确写法:
val price = 10
val count = 2
println("总价:${price * count}")
3. 混淆 = 和 ==
= 是赋值,== 是判断两个值是否相等。
val age = 18
println(age == 18)
4. 区间边界记错
for (i in 1..5) {
println(i) // 包含 5
}
for (i in 1 until 5) {
println(i) // 不包含 5
}
阶段复盘问题
学完后,用自己的话回答下面的问题:
val和var有什么区别?- Kotlin 为什么可以不写变量类型?
$name和${name.length}有什么区别?if作为语句和作为表达式有什么区别?when比多个else if好在哪里?1..10和1 until 10有什么区别?break和continue分别会影响循环的哪一部分?
下一阶段预告
第二阶段会学习函数。你会把第一阶段写在 main 函数里的代码拆出来,封装成可以反复调用的小功能,比如:
fun getGrade(score: Int): Stringfun isEven(number: Int): Booleanfun sumFromOneTo(max: Int): Int
这一步会让代码从「能跑」变成「更清晰、更好复用」。

浙公网安备 33010602011771号