掌握Kotlin编程,从入门到精通:视频教程---下仔课:shanxueit.com/5625/
零基础攻克 Kotlin:从入门到精通系列文章
第一章:启程 - 为什么是Kotlin?与开发环境搭建
对应视频内容: “Hello World!” 与 IntelliJ IDEA 安装。
1. 为什么选择Kotlin?
- 官方认可: Google 官方推荐的 Android 开发首选语言。
- 简洁安全: 代码量比 Java 减少大量模板代码,空指针安全是其一大亮点。
- 百分百互通: 与 Java 可以 100% 相互调用,现有 Java 项目、库都能无缝使用。
- 现代语言特性: 支持函数式编程、扩展函数、协程等,让开发更高效。
2. 搭建你的“武器库”:IntelliJ IDEA
-
下载安装: 前往 JetBrains 官网下载 IntelliJ IDEA Community(社区版) ,它完全免费且对 Kotlin 支持最佳。
-
创建第一个项目:
- 打开 IDEA,选择 “New Project”。
- 左侧选择 “Kotlin”,右侧确保 JDK 已配置(IDEA 通常会自动检测)。
- 项目模板选择 “Console Application”(控制台应用程序)。
- 输入项目名称,例如
KotlinLearning,点击 “Create”。
3. 写下你的第一行代码:Hello World!
项目创建后,你会看到一个 main.kt 文件。里面的代码就是 Kotlin 程序的入口。
kotlin
复制下载
fun main() {
println("Hello, World!")
}
干货点睛:
fun: 关键字,用于声明一个函数。main(): 程序的入口函数,名字是固定的。println(...): 一个内置函数,用于向控制台输出一行文本。- 不需要分号: Kotlin 语句末尾不需要写分号
;。
课后练习:
- 尝试修改
println中的文字,输出你自己的个性签名。 - 在
main函数中,多写几条println语句,观察输出顺序。
第二章:基石 - 变量、数据类型与空安全
对应视频内容: 变量、常量、类型推断与空安全。
1. 变量与常量:如何“记住”数据?
-
变量(Variable): 值可以改变的量。
- 关键字:
var - 语法:
var 变量名: 类型 = 值 - 示例:
var age: Int = 25
- 关键字:
-
常量(Value): 一旦赋值就不能再改变的量。
- 关键字:
val - 语法:
val 常量名: 类型 = 值 - 示例:
val name: String = "张三" - 最佳实践: 优先使用
val,除非你真的需要改变它的值,这能让代码更安全、更清晰。
- 关键字:
2. 强大的类型推断
Kotlin 编译器很聪明,如果你在声明时直接赋值,它通常能自动推断出类型。
kotlin
复制下载
var age = 25 // 编译器知道 age 是 Int 类型
val name = "李四" // 编译器知道 name 是 String 类型
// 等价于
var age: Int = 25
val name: String = "李四"
3. 基础数据类型
- 数字:
Int,Long,Double,Float等。 - 字符:
Char,用单引号'',如'A'。 - 布尔:
Boolean,值为true或false。 - 字符串:
String,用双引号"",如"Hello"。
4. Kotlin的灵魂特性:空安全
这是 Kotlin 解决“十亿美元错误”(空指针异常)的法宝。
-
默认不可空: 默认情况下,你定义的变量都不能存储
null。kotlin
复制下载
var a: String = "Hello" a = null // 编译错误! -
可空类型: 如果你需要一个变量可以为
null,必须在类型后加?。kotlin
复制下载
var b: String? = "Hello" b = null // 这样是可以的 -
安全调用操作符
?.
当你调用一个可能为null的对象的方法时,使用?.。如果对象为null,整个表达式的结果就是null,而不会崩溃。kotlin
复制下载
val length = b?.length // 如果 b 为 null,则 length 也为 null -
Elvis 操作符
?:
提供一个备选值,当左侧表达式为null时使用。kotlin
复制下载
val safeLength = b?.length ?: 0 // 如果 b 或 b.length 为 null,则 safeLength 为 0
课后练习:
- 分别用
var和val声明一个数字和一个字符串,并尝试修改它们,观察区别。 - 声明一个可空的字符串变量,并分别使用
?.和?:来安全地获取其长度。
第三章:逻辑 - 条件与循环
对应视频内容: if-else, when, for, while。
1. 条件语句:if-else 与 when
-
if-else: 与大多数语言类似,但 Kotlin 的
if-else可以作为一个表达式返回一个值。kotlin
复制下载
val max = if (a > b) { println("a is larger") a // 返回值 } else { println("b is larger") b // 返回值 } -
when: 强大的
switch-case升级版。kotlin
复制下载
when (x) { 1 -> println("x is 1") 2, 3 -> println("x is 2 or 3") in 4..10 -> println("x is between 4 and 10") else -> println("x is something else") } // when 也可以作为表达式 val description = when (x) { 1 -> "One" else -> "Not one" }
2. 循环语句:for 与 while
-
for 循环: 主要用于遍历范围、集合等。
kotlin
复制下载
// 遍历范围 for (i in 1..5) { println(i) } // 输出 1,2,3,4,5 for (i in 1 until 5) { println(i) } // 输出 1,2,3,4 for (i in 5 downTo 1) { println(i) } // 输出 5,4,3,2,1 for (i in 1..5 step 2) { println(i) } // 输出 1,3,5 // 遍历集合 val list = listOf("a", "b", "c") for (item in list) { println(item) } -
while / do-while 循环: 与 Java 完全相同。
课后练习:
- 使用
when表达式,根据一个分数(0-100)输出对应的等级(优秀、良好、及格等)。 - 使用
for循环打印出 1 到 100 之间所有能被 7 整除的数。
第四章:函数 - 让代码模块化
对应视频内容: 函数定义、参数、返回值与单表达式函数。
1. 函数的基本形式
kotlin
复制下载
fun functionName(param1: Type1, param2: Type2): ReturnType {
// 函数体
return result
}
fun: 函数声明关键字。- 参数使用
帕斯卡命名法:参数名: 类型。 - 返回值类型在参数列表后指定。
2. 默认参数与命名参数
-
默认参数: 为参数提供默认值,调用时可省略。
kotlin
复制下载
fun greet(name: String, msg: String = "Hello") { println("$msg, $name!") } greet("Alice") // 输出:Hello, Alice! greet("Bob", "Hi") // 输出:Hi, Bob! -
命名参数: 调用时指定参数名,提高可读性,允许跳过某些有默认值的参数。
kotlin
复制下载
greet(msg = "Hey", name = "Carol") // 参数顺序可以打乱
3. 单表达式函数
当函数体只有一个表达式时,可以简化。
kotlin
复制下载
fun square(x: Int): Int = x * x
// 返回值类型如果可以推断,甚至可以省略
fun square(x: Int) = x * x
课后练习:
- 编写一个函数,接收两个整数,返回它们的最大公约数。
- 编写一个函数,用于格式化输出一个人的全名,使用默认参数和命名参数。
第五章:进阶 - 类、对象与扩展函数
对应视频内容: 面向对象入门、数据类、伴生对象与扩展。
1. 类的定义与构造
-
主构造函数: 在类头中声明。
kotlin
复制下载
class Person(val name: String, var age: Int) { // val 和 var 直接声明了属性 fun introduce() { println("I'm $name, $age years old.") } } // 使用 val person = Person("王五", 30) person.age = 31 // 可以修改,因为是 var // person.name = "赵六" // 错误,因为是 val
2. 数据类(Data Class)
用于纯粹持有数据的类,编译器会自动为你生成 toString(), equals(), hashCode(), copy() 等常用方法。
kotlin
复制下载
data class User(val id: Int, val username: String)
3. 伴生对象(Companion Object)
Kotlin 中没有 static 关键字,伴生对象用于实现类似的静态成员概念。
kotlin
复制下载
class MyClass {
companion object {
fun create(): MyClass = MyClass()
const val CONSTANT = "This is a constant"
}
}
// 调用
val instance = MyClass.create() // 像静态方法一样调用
println(MyClass.CONSTANT)
4. 扩展函数(Extension Function)
在不修改原类的情况下,为类添加新函数。这是一个非常强大的功能。
kotlin
复制下载
// 为 String 类添加一个新函数
fun String.addExcitement(): String {
return this + "!!!"
}
fun main() {
println("Hello".addExcitement()) // 输出:Hello!!!
}
课后练习:
- 定义一个
Rectangle数据类,包含长和宽属性,并添加一个计算面积的方法。 - 为
List<Int>写一个扩展函数,用于计算所有偶数的和。
总结与下一步
通过这五章的学习,你已经掌握了 Kotlin 最核心、最基础的语法和概念。你已经从“零基础”成功入门!
下一步的精通路径建议:
- 集合操作: 深入学习
List,Set,Map以及强大的函数式 API(如map,filter,reduce)。 - Lambda 表达式: 理解函数作为“一等公民”的用法。
- 协程(Coroutine): 攻克 Kotlin 异步编程的利器,用于简化并发任务。
- 实践项目: 尝试用 Kotlin 写一个简单的命令行工具,或者开始一个 Android 小应用。
记住,编程是一门实践的艺术。多看、多写、多思考,将视频中的演示和这篇文章中的知识点在 IDE 中亲手敲一遍,你一定能步步精通 Kotlin!