Head First Kotlin程序设计

Book description

你将从这本书中学到什么?

本书是对Kotlin编程的完整介绍,将帮助你以一种独特的方法学习Kotlin语言(这远远超越了语法和说明手册),并教你如何像一个伟大的Kotlin开发者一样思考。你将学习从语言基础到集合、泛型、lambda以及高阶函数的所有内容。在此过程中,你将使用面向对象和函数式编程。如果你想真正了解Kotlin,这本书正适合你。

为什么这本书如此不同?

基于认知科学和学习理论的新研究,本书采用一种视觉丰富的格式来吸引你,而不是使用以文字为主的方法来使你昏昏入睡。为什么要浪费时间在新的概念中挣扎?这种多感官的学习体验正是为你的大脑真正的工作方式而设计的。

Table of contents

  1. 封面
  2. 扉页
  3. 作者简介
  4. 目录 (概览) (1/4)
  5. 目录 (概览) (2/4)
  6. 目录 (概览) (3/4)
  7. 目录 (概览) (4/4)
  8. 如何使用本书 (1/3)
  9. 如何使用本书 (2/3)
  10. 如何使用本书 (3/3)
  11. 1. 开始
    1. 欢迎来到Kotlin之城
    2. 你几乎可以在任何地方使用Kotlin
    3. 本章内容
    4. 安装IntelliJ IDEA
    5. 构建一个基本的应用程序
    6. 你的第一个Kotlin项目
    7. 新增一个Kotlin文件
    8. main函数剖析
    9. 将main函数添加至App.kt文件
    10. 你可以在main函数里面做些什么呢
    11. 循环
    12. 循环示例
    13. 条件分支
    14. 带有返回值的if语句
    15. 更新main函数
    16. 使用Kotlin的交互式shell
    17. 你可以在REPL中加入多行代码片段 (1/2)
    18. 你可以在REPL中加入多行代码片段 (2/2)
    19. Kotlin工具箱
  12. 2. 基本类型和变量
    1. 你的代码需要变量
    2. 当你声明变量时会发生什么
    3. 变量保存了指向对象的引用
    4. Kotlin的基本类型
    5. 如何显式声明变量类型
    6. 根据变量类型正确赋值
    7. 将一个变量值赋给另一个变量
    8. 类型转换
    9. 数值类型转换背后发生了什么
    10. 小心溢出
    11. 使用数组存放多个值
    12. 创建Phrase-O-Matic应用程序
    13. 向PhraseOMatic.kt中添加代码
    14. 编译器从数组中元素的值来推测数组的类型
    15. var表示该变量可以指向不同数组
    16. val表示该变量永远指向同一个数组 (1/2)
    17. val表示该变量永远指向同一个数组 (2/2)
    18. Kotlin工具箱
  13. 3. 函数
    1. 我们一起来编写一个游戏“Rock、Paper、Scissors”
    2. 游戏设计概览
    3. 让程序选择一个选项
    4. 如何创建函数
    5. 可以向函数中传入多个值
    6. 可以从函数中返回一个值
    7. 单个表达式函数
    8. 向Game.kt中添加getGameChoice函数 (1/2)
    9. 向Game.kt中添加getGameChoice函数 (2/2)
    10. getUserChoice函数
    11. for循环工作原理
    12. 询问用户的选择
    13. 验证用户的输入
    14. 更强大的布尔表达式
    15. 向Game.kt中添加getUserChoice函数
    16. 向Game.kt中添加printResult函数
    17. Kotlin工具箱
  14. 4. 类和对象
    1. 使用类定义对象类型
    2. 如何设计自己的类
    3. 一起定义一个Dog类
    4. 如何创建Dog对象
    5. 如何访问属性及函数
    6. 创建一个Songs应用
    7. 神奇的对象创建
    8. 对象是如何创建的
    9. 现象背后:调用Dog构造函数
    10. 深入了解属性
    11. 灵活的属性初始化
    12. 如何使用初始化块
    13. 你必须初始化所有属性
    14. 如何验证属性值
    15. 如何编写自定义的getter
    16. 如何编写自定义的setter
    17. Dog项目的完整代码
    18. Kotlin工具箱
  15. 5. 子类和父类
    1. 继承帮助你避免代码重复
    2. 我们将要做什么
    3. 设计一个animal类继承结构
    4. 使用继承避免子类中的代码重复
    5. 子类应该覆盖什么
    6. 我们可以将一些动物分类
    7. 添加Canine和Feline类
    8. 使用IS-A测试类的层次结构
    9. 继承树中的任意子类都满足IS-A测试
    10. 创建一些Kotlin动物
    11. 使用open关键字声明父类及它的属性和方法
    12. 子类是如何继承父类的
    13. 如何(以及何时)覆盖属性
    14. 覆盖属性不仅仅让你可以指定默认值
    15. 如何覆盖方法
    16. 被覆盖的方法或属性仍然是open的
    17. 向Animals项目中添加Hippo类
    18. 添加Canine和Wolf类
    19. 哪个方法被调用了
    20. 当你调用方法时,变量指向对象的方法进行响应
    21. 你可以使用父类型作为方法的参数和返回值类型
    22. 更新后的Animals代码
    23. Kotlin工具箱
  16. 6. 抽象类和接口
    1. 再谈Animal类的层次结构
    2. 一些类不能被实例化
    3. 抽象还是具体
    4. 抽象类可以有抽象属性和方法
    5. Animal类有两个抽象方法
    6. 如何实现一个抽象类
    7. 你必须实现所有的抽象属性和方法
    8. 更新Animals项目
    9. 独立的类可以有共同的行为
    10. 接口可以让你在父类层次结构之外定义共同的行为
    11. 让我们定义Roamable接口
    12. 如何定义接口属性
    13. 声明一个类实现了一个接口
    14. 如何实现多个接口
    15. 如何决定是创建类、子类、抽象类还是接口
    16. 更新Animals项目
    17. 接口让你可以使用多态
    18. 在哪里使用is操作符
    19. 使用when将变量和一组选项进行比较
    20. is 操作符会进行智能转换
    21. 使用as进行显式转换
    22. 更新Animals项目
    23. Kotlin工具箱
  17. 7. 数据类
    1. ==调用了equals方法
    2. equals继承自Any父类
    3. Any类定义的共有行为
    4. 我们可能希望用equals检查两个对象是否等价
    5. 数据类允许你创建数据对象
    6. 数据类覆盖了它们继承的行为
    7. 使用copy方法复制数据对象
    8. 数据类定义了componentN方法
    9. 创建Recipes项目
    10. 生成的方法仅包含构造函数中 定义的属性
    11. 初始化许多属性可能会导致 烦琐的代码
    12. 如何在构造函数中设置默认值
    13. 方法也可以使用默认值
    14. 重载方法
    15. 更新Recipes项目
    16. Kotlin工具箱
  18. 8. 空值和异常
    1. 从变量中删除对象引用
    2. 用空值删除一个对象引用
    3. 你可以在任何能够使用非可空类型的地方使用可空类型
    4. 创建一个可空类型的数组
    5. 访问可空类型的方法和属性
    6. 通过安全调用确保一切安全
    7. 链式安全调用
    8. 你可以使用安全调用赋值
    9. 如果变量的值不为空,使用let执行代码
    10. 对数组项使用let
    11. 替代if表达式
    12. 使用!!操作符故意抛出NullPointerException
    13. 创建Null Values项目
    14. 在异常情况下抛出异常
    15. 使用try/catch捕获异常
    16. 使用finally去做无论如何你都想做的事情
    17. 异常是Exception类型的对象
    18. 你可以显式地抛出异常
    19. try和throw都是表达式
    20. Kotlin工具箱
  19. 9. 集合
    1. 有用的数组
    2. 数组不能处理的事情
    3. Kotlin标准库
    4. List、Set和Map
    5. 奇妙的List
    6. 创建MutableList
    7. 移除一个值
    8. 改变元素顺序以及批量更改
    9. 创建Collections项目
    10. List允许重复项
    11. 如何创建Set
    12. Set如何查重
    13. 哈希码与相等性
    14. 覆盖hashCode和equals的规则
    15. 如何使用MutableSet
    16. 复制MutableSet
    17. 更新Collections项目 (1/2)
    18. 更新Collections项目 (2/2)
    19. Map的表演时间
    20. 如何使用Map
    21. 创建MutableMap
    22. 从MutableMap移除条目
    23. 拷贝Map和MutableMap
    24. 完整的Collections项目代码 (1/2)
    25. 完整的Collections项目代码 (2/2)
    26. Kotlin工具箱
  20. 10. 泛型
    1. 泛型在集合中的使用
    2. 如何定义MutableList
    3. 在MutableList中使用类型参数
    4. 通过泛型类或接口可以做什么
    5. 接下来要做的事
    6. 创建Pet类的层次结构
    7. 定义Contest类
    8. 添加scores属性
    9. 创建getWinners方法
    10. 创建一些Contest对象
    11. 创建Generics项目
    12. Retailer层次结构
    13. 定义Retailer接口
    14. 轻松创建CatRetailer、DogRetailer和FishRetailer等对象
    15. 用out使泛型类型协变
    16. 更新Generics项目
    17. 再定义一个Vet类
    18. 创建Vet对象
    19. 用in使泛型类型逆变
    20. 泛型类型的局部逆变
    21. 更新Generics项目 (1/2)
    22. 更新Generics项目 (2/2)
    23. Kotlin工具箱
  21. 11. lambda和高阶函数
    1. 初识lambda
    2. lambda的代码格式
    3. 将lambda赋值给变量
    4. 调用lambda时会发生什么
    5. lambda表达式类型
    6. lambda参数类型的自动解析
    7. 根据变量类型使用正确的lambda
    8. 创建Lambdas项目
    9. 将lambda作为函数参数
    10. 在函数体中调用lambda
    11. 代码运行时发生了什么
    12. 将lambda移到函数括号外面
    13. 更新Lambdas项目
    14. 函数可以返回一个lambda
    15. 将lambda作为函数参数和返回值
    16. 如何使用combine函数
    17. 用typealias为已存在的类型取别名
    18. 更新Lambdas项目 (1/2)
    19. 更新Lambdas项目 (2/2)
    20. Kotlin工具箱
  22. 12. 内置高阶函数
    1. Kotlin的内置高阶函数
    2. 用min 和max函数处理基础类型
    3. 深入理解minBy 和maxBy 的lambda参数设置
    4. sumBy与sumByDouble函数
    5. 创建Groceries项目
    6. 走近filter函数
    7. 使用map转换集合
    8. 代码运行时发生了什么
    9. 像for循环的forEach
    10. forEach没有返回值
    11. 更新Groceries 项目
    12. 使用groupBy划分集合
    13. 在链式调用中使用groupBy
    14. 如何使用fold函数
    15. fold函数背后的故事
    16. 再举几个fold函数的例子
    17. 更新Groceries 项目 (1/2)
    18. 更新Groceries 项目 (2/2)
    19. Kotlin工具箱
  23. 附录i. 协程
    1. 让我们构建一个鼓机
    2. 将代码添加到项目中
    3. 使用runBlocking在相同作用域内运行协程
    4. Thread.sleep暂停当前线程
    5. 项目的完整代码
  24. 附录ii. 测试
    1. Kotlin可以使用现有的测试库
    2. 创建JUnit测试类
    3. 使用KotlinTest库
    4. 用row测试数据集
  25. 附录iii. 其他
    1. 1. 包和导入
    2. 2. 可见性修饰符
    3. 3. 枚举类
    4. 4. 密封类
    5. 5. 嵌套类和内部类
    6. 6. 对象声明和表达式
    7. 7. 扩展
    8. 8. return、break和continue
    9. 9. 更多关于函数的知识
    10. 10. Kotlin和其他语言的互操作性
  26. 索引 (1/3)
  27. 索引 (2/3)
  28. 索引 (3/3)

Product information

  • Title: Head First Kotlin程序设计
  • Author(s): Dawn Griffiths, David Griffiths
  • Release date: August 2020
  • Publisher(s): China Machine Press
  • ISBN: 9787111662358

You might also like

book

Head First Swift

by Jon Manning, Paris Buttfield-Addison

What will you learn from this book? Swift is best known as Apple's programming language of …

book

Head First Kotlin

by Dawn Griffiths, David Griffiths

What will you learn from this book? Head First Kotlin is a complete introduction to coding …

book

面向对象的思考过程(原书第5版)

by 马特 魏斯费尔德

本书是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。本书共15章,在结构上可以分为两部分:第壹部分包括第1~10章,探讨面向对象的基本概念,比如封装、多态、继承等;第二部分包括第11~15章,专注于将这些概念应用于一些通用的面向对象技术中,并结合了一些实用的应用程序。

book

Spring Boot学习指南:构建云原生Java和Kotlin应用程序

by Mark Heckler

Spring Boot每月的下载量超过7500万,是目前使用最广泛的Java框架。它的易用性和强大功能彻底改变了应用程序的开发方式,使应用程序逐渐从单体形式发展到微服务。然而,Spring Boot的简单性也可能令人困惑。开发人员如何学习足够的知识来立即提高生产效率呢?本书展示了如何使用该框架来编写成功的任务关键型应用程序。 本书将带你理解Spring Boot的架构和方法,包括调试、测试和部署等主题。如果你想使用Spring Boot来快速、有效地开发云原生Java或Kotlin应用程序(使用响应式编程、构建API以及创建各种数据库访问),那么本书就是为你准备的。 学完本书,你将: 了解Spring Boot如何简化云原生应用程序的开发和部署。 构建响应式应用程序并扩展跨网络边界的通信,以创建分布式系统。 理解Spring Boot的架构和方法如何提高开发人员的生产效率和应用程序的可移植性。 能够快速、可靠地为生产工作负载部署Spring Boot应用程序。 监控应用程序和系统的运行状况,以获得最佳性能和可靠性。 轻松地调试、测试和保护基于云的应用程序。