万本电子书0元读

万本电子书0元读

顶部广告

Head First Kotlin程序设计电子书

【目标读者】本书适合有一定基本的编程知识(不要求你有Java编程经验)想零基础学习Kotlin的新手阅读。 本书语言和版式活泼,内容讲解深浅出,是难得的Kotlin门书。 本书内容涵盖Kotlin的基本知识、用例和对象(包括口、继承和授权等)以及创建基本Kotlin程序。 书中配备了大量有趣的实例、图示和练习,让读者轻轻松松掌握Kotlin。 【为什么这本书如此不同?】 基于认知科学和学习理论的新研究,本书采用一种视觉丰富的格式来吸引你,而不是使用以文字为主的方法来使你昏昏睡。为什么要浪费时间在新的概念中挣扎?这种多感官的学习体验正是为你的大脑真正的工作方式而设计的。

售       价:¥

纸质售价:¥100.30购买纸书

50人正在读 | 0人评论 6.4

作       者:(美)道恩•格里菲斯(Dawn Griffiths),(美)戴维•格里菲斯(David Griffiths)

出  版  社:机械工业出版社

出版时间:2020-08-01

字       数:21.3万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书是对Kotlin编程的完整介绍,将帮助你以一种独特的方法学习Kotlin语言(这远远超越了语法和说明手册),并教你如何像一个伟大的Kotlin发者一样思考。你将学习从语言基础到集合、泛型、lambda以及高阶函数的所有内容。在此过程中,你将使用面向对象和函数式编程。如果你想真正了解Kotlin,这本书正适合你。   本书介绍了Kotlin的基本语法、常用类型、面向对象编程以及一些高阶的知识。在所有的章节中,都广泛使用图片和会话的介绍方式,以帮助大脑更容易理解和获取信息。此外还有各种生动的实例、习题,以及有问必答环节。让读者仿佛置身其中,更加高效专注地学习知识,而把一些无关紧要的事情抛之脑后。本书以类似于“划重”或“记笔记”的方式对某些内容或代码行注解和说明,读者更容易知晓内容和代码的重要部分。此外,有问必答环节的设计也十分巧妙,它会囊括一些在文中没有提及到,但读者可能会疑惑的问题。<br/>【推荐语】<br/>【目标读者】本书适合有一定基本的编程知识(不要求你有Java编程经验)想零基础学习Kotlin的新手阅读。 本书语言和版式活泼,内容讲解深浅出,是难得的Kotlin门书。 本书内容涵盖Kotlin的基本知识、用例和对象(包括口、继承和授权等)以及创建基本Kotlin程序。 书中配备了大量有趣的实例、图示和练习,让读者轻轻松松掌握Kotlin。   【为什么这本书如此不同?】 基于认知科学和学习理论的新研究,本书采用一种视觉丰富的格式来吸引你,而不是使用以文字为主的方法来使你昏昏睡。为什么要浪费时间在新的概念中挣扎?这种多感官的学习体验正是为你的大脑真正的工作方式而设计的。<br/>【作者】<br/>Dawn Griffiths是一名高级发人员和高级软件架构师,在IT行业拥有超过20年的工作经验。她写过“Head First”系列中的其他书籍,包括Head First Android Development。她还曾经和她的丈夫David一起发了动画视频教程The Agile Sketchpad,以一种使你的大脑保持积极参与的方式,教授核心概念和技术。<br/>
目录展开

作者简介

引子 如何使用本书

谁适合看本书

我们知道你们在想什么

我们知道你的大脑在想什么

元认知:思考何为思考

我们是这样做的

重要说明

技术审校团队

致谢

1 开始

欢迎来到Kotlin之城

你几乎可以在任何地方使用Kotlin

本章内容

安装IntelliJ IDEA

构建一个基本的应用程序

你的第一个Kotlin项目

新增一个Kotlin文件

main函数剖析

将main函数添加至App.kt文件

你可以在main函数里面做些什么呢

循环

循环示例

条件分支

带有返回值的if语句

更新main函数

使用Kotlin的交互式shell

你可以在REPL中加入多行代码片段

Kotlin工具箱

2 基本类型和变量

你的代码需要变量

当你声明变量时会发生什么

变量保存了指向对象的引用

Kotlin的基本类型

如何显式声明变量类型

根据变量类型正确赋值

将一个变量值赋给另一个变量

类型转换

数值类型转换背后发生了什么

小心溢出

使用数组存放多个值

创建Phrase-O-Matic应用程序

向PhraseOMatic.kt中添加代码

编译器从数组中元素的值来推测数组的类型

var表示该变量可以指向不同数组

val表示该变量永远指向同一个数组

Kotlin工具箱

3 函数

我们一起来编写一个游戏“Rock、Paper、Scissors”

游戏设计概览

让程序选择一个选项

如何创建函数

可以向函数中传入多个值

可以从函数中返回一个值

单个表达式函数

向Game.kt中添加getGameChoice函数

getUserChoice函数

for循环工作原理

询问用户的选择

验证用户的输入

更强大的布尔表达式(续)

向Game.kt中添加getUserChoice函数

向Game.kt中添加printResult函数

Kotlin工具箱

4 类和对象

使用类定义对象类型

如何设计自己的类

一起定义一个Dog类

如何创建Dog对象

如何访问属性及函数

创建一个Songs应用

神奇的对象创建

对象是如何创建的

现象背后:调用Dog构造函数

深入了解属性

灵活的属性初始化

如何使用初始化块

你必须初始化所有属性

如何验证属性值

如何编写自定义的getter

如何编写自定义的setter

Dog项目的完整代码

Kotlin工具箱

5 子类和父类

继承帮助你避免代码重复

我们将要做什么

设计一个animal类继承结构

使用继承避免子类中的代码重复

子类应该覆盖什么

我们可以将一些动物分类

添加Canine和Feline类

使用IS-A测试类的层次结构

继承树中的任意子类都满足IS-A测试

创建一些Kotlin动物

使用open关键字声明父类及它的属性和方法

子类是如何继承父类的

如何(以及何时)覆盖属性

覆盖属性不仅仅让你可以指定默认值

如何覆盖方法

被覆盖的方法或属性仍然是open的

向Animals项目中添加Hippo类

添加Canine和Wolf类

哪个方法被调用了

当你调用方法时,变量指向对象的方法进行响应

你可以使用父类型作为方法的参数和返回值类型

更新后的Animals代码

Kotlin工具箱

6 抽象类和接口

再谈Animal类的层次结构

一些类不能被实例化

抽象还是具体

抽象类可以有抽象属性和方法

Animal类有两个抽象方法

如何实现一个抽象类

你必须实现所有的抽象属性和方法

更新Animals项目

独立的类可以有共同的行为

接口可以让你在父类层次结构之外定义共同的行为

让我们定义Roamable接口

如何定义接口属性

声明一个类实现了一个接口

如何实现多个接口

如何决定是创建类、子类、抽象类还是接口

更新Animals项目

接口让你可以使用多态

在哪里使用is操作符

使用when将变量和一组选项进行比较

is操作符通常会进行智能转换

使用as进行显式转换

更新Animals项目

Kotlin工具箱

7 数据类

==调用了equals方法

equals继承自Any父类

Any类定义的共有行为

我们可能希望用equals检查两个对象是否等价

数据类允许你创建数据对象

数据类覆盖了它们继承的行为

使用copy方法复制数据对象

数据类定义了componentN方法

创建Recipes项目

生成的方法仅包含构造函数中定义的属性

初始化许多属性可能会导致烦琐的代码

如何在构造函数中设置默认值

方法也可以使用默认值

重载方法

更新Recipes项目

Kotlin工具箱

8 空值和异常

从变量中删除对象引用

用空值删除一个对象引用

你可以在任何能够使用非可空类型的地方使用可空类型

创建一个可空类型的数组

访问可空类型的方法和属性

通过安全调用确保一切安全

链式安全调用

你可以使用安全调用赋值

如果变量的值不为空,使用let执行代码

对数组项使用let

替代if表达式

使用!!操作符故意抛出NullPointerException

创建Null Values项目

在异常情况下抛出异常

使用try/catch捕获异常

使用finally去做无论如何你都想做的事情

异常是Exception类型的对象

你可以显式地抛出异常

try和throw都是表达式

Kotlin工具箱

9 集合

有用的数组

数组不能处理的事情

Kotlin标准库

List、Set和Map

奇妙的List

创建MutableList

移除一个值

改变元素顺序以及批量更改

创建Collections项目

List允许重复项

如何创建Set

Set如何查重

哈希码与相等性

覆盖hashCode和equals的规则

如何使用MutableSet

复制MutableSet

更新Collections项目

Map的表演时间

如何使用Map

创建MutableMap

从MutableMap移除条目

拷贝Map和MutableMap

完整的Collections项目代码

Kotlin工具箱

10 泛型

泛型在集合中的使用

如何定义MutableList

在MutableList中使用类型参数

通过泛型类或接口可以做什么

接下来要做的事

创建Pet类的层次结构

定义Contest类

添加scores属性

创建getWinners方法

创建一些Contest对象

创建Generics项目

Retailer层次结构

定义Retailer接口

轻松创建CatRetailer、DogRetailer和FishRetailer等对象

用out使泛型类型协变

更新Generics项目

再定义一个Vet类

创建Vet对象

用in使泛型类型逆变

泛型类型的局部逆变

更新Generics项目

Kotlin工具箱

11 lambda和高阶函数

初识lambda

lambda的代码格式

将lambda赋值给变量

调用lambda时会发生什么

lambda表达式类型

lambda参数类型的自动解析

根据变量类型使用正确的lambda

创建Lambdas项目

将lambda作为函数参数

在函数体中调用lambda

代码运行时发生了什么

将lambda移到函数括号外面

更新Lambdas项目

函数可以返回一个lambda

将lambda作为函数参数和返回值

如何使用combine函数

用typealias为已存在的类型取别名

更新Lambdas项目

Kotlin工具箱

12 内置高阶函数

Kotlin的内置高阶函数

用min和max函数处理基础类型

深入理解minBy和maxBy的lambda参数设置

sumBy与sumByDouble函数

创建Groceries项目

走近filter函数

使用map转换集合

代码运行时发生了什么

像for循环的forEach

forEach没有返回值

更新Groceries项目

使用groupBy划分集合

在链式调用中使用groupBy

如何使用fold函数

fold函数背后的故事

再举几个fold函数的例子

更新Groceries项目

Kotlin工具箱

附录i 协程

附录ii 测试

附录iii 其他

1.包和导入

2.可见性修饰符

3.枚举类

4.密封类

5.嵌套类和内部类

6.对象声明和表达式

7.扩展

8.return、break和continue

9.更多关于函数的知识

10.Kotlin和其他语言的互操作性

索引

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部