掌握Kotlin编程,从入门到精通:视频教程

132 阅读7分钟

0b55b319ebc4b745a6348d65641a401a8b821510.webp

掌握Kotlin编程,从入门到精通:视频教程---下仔课:shanxueit.com/5625/

零基础攻克 Kotlin:从入门到精通系列文章

第一章:启程 - 为什么是Kotlin?与开发环境搭建

对应视频内容:  “Hello World!” 与 IntelliJ IDEA 安装。

1. 为什么选择Kotlin?

  • 官方认可:  Google 官方推荐的 Android 开发首选语言。
  • 简洁安全:  代码量比 Java 减少大量模板代码,空指针安全是其一大亮点。
  • 百分百互通:  与 Java 可以 100% 相互调用,现有 Java 项目、库都能无缝使用。
  • 现代语言特性:  支持函数式编程、扩展函数、协程等,让开发更高效。

2. 搭建你的“武器库”:IntelliJ IDEA

  1. 下载安装:  前往 JetBrains 官网下载 IntelliJ IDEA Community(社区版) ,它完全免费且对 Kotlin 支持最佳。

  2. 创建第一个项目:

    • 打开 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. 基础数据类型

  • 数字:  IntLongDoubleFloat 等。
  • 字符:  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
    

课后练习:

  1. 分别用 var 和 val 声明一个数字和一个字符串,并尝试修改它们,观察区别。
  2. 声明一个可空的字符串变量,并分别使用 ?. 和 ?: 来安全地获取其长度。

第三章:逻辑 - 条件与循环

对应视频内容:  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 完全相同。

课后练习:

  1. 使用 when 表达式,根据一个分数(0-100)输出对应的等级(优秀、良好、及格等)。
  2. 使用 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. 编写一个函数,接收两个整数,返回它们的最大公约数。
  2. 编写一个函数,用于格式化输出一个人的全名,使用默认参数和命名参数。

第五章:进阶 - 类、对象与扩展函数

对应视频内容:  面向对象入门、数据类、伴生对象与扩展。

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!!!
}

课后练习:

  1. 定义一个 Rectangle 数据类,包含长和宽属性,并添加一个计算面积的方法。
  2. 为 List<Int> 写一个扩展函数,用于计算所有偶数的和。

总结与下一步

通过这五章的学习,你已经掌握了 Kotlin 最核心、最基础的语法和概念。你已经从“零基础”成功入门!

下一步的精通路径建议:

  1. 集合操作:  深入学习 ListSetMap 以及强大的函数式 API(如 mapfilterreduce)。
  2. Lambda 表达式:  理解函数作为“一等公民”的用法。
  3. 协程(Coroutine):  攻克 Kotlin 异步编程的利器,用于简化并发任务。
  4. 实践项目:  尝试用 Kotlin 写一个简单的命令行工具,或者开始一个 Android 小应用。

记住,编程是一门实践的艺术。多看、多写、多思考,将视频中的演示和这篇文章中的知识点在 IDE 中亲手敲一遍,你一定能步步精通 Kotlin!