Kotlin从小白到大牛pdf下载pdf下载

Kotlin从小白到大牛百度网盘pdf下载

作者:
简介:本篇主要提供Kotlin从小白到大牛pdf下载
出版社:清华大学出版社
出版时间:2018-08
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

编辑推荐

本书作者历时一年,精心编写了适合Kotlin入门者的一本立体化教程。本书是JetBrains公司官方推荐用书!赠送教学课件29章,300个示例源代码,教学视频2500分钟!并提供实时在线答疑服务

内容简介

  本书是一部系统论述Kotlin编程语言、面向对象编程方法以及函数式编程思想的立体化教程(含纸质图书、电子书、教学课件、源代码与视频教程)。全书共分为5篇:第1篇Kotlin基础(第1章~第10章),第2篇面向对象(第11章~第13章),第3篇函数式编程(第14章~第17章),第4篇Kotlin进阶(第18章~第27章),第5篇项目实战(第28章~第29章)。主要内容包括:开篇综述;开发环境搭建;个Kotlin程序;Kotlin语法基础;Kotlin编码规范;数据类型;字符串;运算符;程序流程控制;函数;面向对象编程;继承与多态;抽象类与接口;函数式编程基石——高阶函数和Lambda表达式;泛型;数据容器——数组和集合;Kotlin中函数式编程API;异常处理;线程;协程;Kotlin与Java混合编程;Kotlin I/O与文件管理;网络编程;Kotlin与Java Swing图形用户界面编程;轻量级SQL框架——Exposed;反射;注解。最后给出了两个项目设计案例,项目实战1:开发PetStore宠物商店项目;项目实战2:开发Kotlin版QQ2006聊天工具。
  为便于读者快速掌握Kotlin编程方法,本书作者精心制作了电子书、完整的教学课件、完整的源代码与丰富的配套视频教程,并提供在线答疑服务。

作者简介

关东升:一个在IT领域摸爬滚打20多年的老程序员、培训师、作者。精通多种IT技术。参与设计和开发北京市公交一卡通大型项目,开发国家农产品追溯系统、金融系统微博等移动客户端项目,并在App Store发布多款游戏和应用软件。 近期为中国移动、中国联通、南方航空、中石油、工商银行、平安银行和天津港务局等企事业单位授课。著有《iOS开发指南》《从零开始学Swift》《Android网络游戏开发实战》《Cocos2d-x实战》系列和《JSP网络程序设计》等40多本计算机书籍。

目录

推荐序 1
前言 3
配套资源说明 6
学习路线图 7
内容说明 9
第1篇 Kotlin基础
本篇视频:454分钟
第1章 开篇综述 2
本章视频:33分钟
1.1 Kotlin语言简介 2
1.1.1 Kotlin语言历史 2
1.1.2 Kotlin语言设计目标 2
1.2 Kotlin语言特点 3
1.3 Kotlin与Java虚拟机 4
1.3.1 Java虚拟机 4
1.3.2 Kotlin应用程序运行过程 5
1.4 如何获得帮助 5
第2章 开发环境搭建 8
本章视频:25分钟
2.1 JDK工具包 8
2.1.1 JDK下载和安装 8
2.1.2 设置环境变量 10
2.2 IntelliJ IDEA开发工具 12
2.3 Eclipse开发工具 13
2.3.1 Eclipse下载和安装 13
2.3.2 安装Kotlin插件 17
2.4 Kotlin编译器 18
2.4.1 下载Kotlin编译器 18
2.4.2 设置Kotlin编译器环境变量 19
2.5 文本编辑工具 20
2.5.1 在Sublime Text中安装Kotlin语言包 20
2.5.2 Sublime Text与Kotlin编译器集成 21
第3章 第一个Kotlin程序 25
本章视频:22分钟
3.1 使用REPL实现 25
3.2 使用IntelliJ IDEA实现 26
3.2.1 创建项目 26
3.2.2 创建Kotlin源代码文件 28
3.2.3 编写代码 29
3.2.4 运行程序 30
3.3 使用IntelliJ IDEA与Gradle实现 30
3.4 使用Eclipse与Kotlin插件实现 33
3.4.1 创建项目 33
3.4.2 创建Kotlin源代码文件 34
3.4.3 运行程序 35
3.5 使用文本编辑工具与Kotlin编译器实现 37
3.5.1 编写代码 37
3.5.2 编译程序 37
3.5.3 运行程序 39
3.6 代码解释 39
第4章 Kotlin语法基础 41
本章视频:52分钟
4.1 标识符和关键字 41
4.1.1 标识符 41
4.1.2 关键字 42
4.2 变量和常量 43
4.2.1 变量 43
4.2.2 常量和只读变量 44
4.2.3 使用var还是val 45
4.3 注释 46
4.4 语句与表达式 47
4.4.1 语句 48
4.4.2 表达式 48
4.5 包 49
4.5.1 包的作用 49
4.5.2 包的定义 50
4.5.3 包的引入 51
第5章 Kotlin编码规范 53
本章视频:49分钟
5.1 命名规范 53
5.2 注释规范 55
5.2.1 文件注释 55
5.2.2 文档注释 55
5.2.3 代码注释 58
5.2.4 使用地标注释 59
5.3 声明 60
5.3.1 变量或常量声明 60
5.3.2 类声明 61
5.4 代码排版 62
5.4.1 空行 62
5.4.2 空格 64
5.4.3 缩进 65
5.4.4 断行 65
5.5 省略规范 66
第6章 数据类型 68
本章视频:45分钟
6.1 回顾Java数据类型 68
6.2 Kotlin基本数据类型 69
6.2.1 整型类型 70
6.2.2 浮点类型 71
6.2.3 字符类型 72
6.2.4 布尔类型 74
6.3 数值类型之间的转换 75
6.3.1 赋值与显式转换 75
6.3.2 数学计算与隐式转换 77
6.4 可空类型 77
6.4.1 可空类型概念 78
6.4.2 使用安全调用运算符(?.) 78
6.4.3 非空断言运算符(!!) 79
6.4.4 使用Elvis运算符(?:) 80
第7章 字符串 82
本章视频:93分钟
7.1 字符串字面量 82
7.1.1 普通字符串 82
7.1.2 原始字符串 83
7.2 不可变字符串 85
7.2.1 String 85
7.2.2 字符串拼接 86
7.2.3 字符串模板 87
7.2.4 字符串查找 89
7.2.5 字符串比较 91
7.2.6 字符串截取 93
7.3 可变字符串 94
7.3.1 StringBuilder 94
7.3.2 字符串追加、插入、删除和替换 95
7.4 正则表达式 97
7.4.1 Regex类 97
7.4.2 字符串匹配 98
7.4.3 字符串查找 99
7.4.4 字符串替换 99
7.4.5 字符串分割 100
第8章 运算符 102
本章视频:51分钟
8.1 算术运算符 102
8.1.1 一元运算符 102
8.1.2 二元运算符 103
8.1.3 算术赋值运算符 104
8.2 关系运算符 105
8.3 逻辑运算符 107
8.4 位运算符 108
8.5 其他运算符 111
8.6 运算符优先级 111
第9章 程序流程控制 113
本章视频:47分钟
9.1 if分支结构 113
9.1.1 if结构当作语句使用 113
9.1.2 if表达式 115
9.2 when多分支结构 117
9.2.1 when结构当作语句使用 118
9.2.2 when表达式 119
9.3 循环结构 121
9.3.1 while语句 121
9.3.2 do-while语句 122
9.3.3 for语句 122
9.4 跳转语句 124
9.4.1 break语句 124
9.4.2 continue语句 126
9.5 使用区间 128
9.5.1 表示区间 128
9.5.2 使用in和!in关键字 129
第10章 函数 131
本章视频:37分钟
10.1 函数声明 131
10.2 返回特殊数据 132
10.2.1 无返回数据与Unit类型 132
10.2.2 永远不会正常返回数据与Nothing类型 133
10.3 函数参数 134
10.3.1 使用命名参数调用函数 134
10.3.2 参数默认值 135
10.3.3 可变参数 136
10.4 表达式函数体 137
10.5 局部函数 137
10.6 匿名函数 138
第2篇 面向对象
本篇视频:360分钟
第11章 面向对象编程 142
本章视频:246分钟
11.1 面向对象概述 142
11.2 面向对象的三个基本特性 143
11.2.1 封装性 143
11.2.2 继承性 143
11.2.3 多态性 144
11.3 类声明 144

精彩书摘

  第3章
  第一个Kotlin程序
  本章视频:22分钟
  本章以HelloWorld作为切入点,介绍如何编写和运行Kotlin程序代码。
  编写和运行Kotlin程序有多种方式,总的来说有两种:
  (1)交互式方式运行;
  (2)编译为字节码文件方式运行。
  交互式方式运行可以采用REPL。编译为字节码方式运行就是使用IntelliJ IDEA或Eclipse创建一个项目,通过这些工具可以编译和运行Kotlin源文件。另外还可以使用文本编辑工具编写Kotlin源文件,再使用Kotlin编译器提供的kotlinc命令在命令提示行中编译Kotlin源程序,然后再通过kotlin命令或JDK提供的java命令运行。
  本章介绍如何使用这些工具实现HelloWorld程序。
  3.1 使用REPL实现
  REPL是英文Read-Eval-Print Loop的缩写,直译为“读取-求值-输出”,它指代一种简单的交互式运行编程环境。REPL对于学习一门新的编程语言有很大的帮助,因为它能立刻对初学者做出回应。许多编程语言都可以使用REPL研究算法以及进行调试。
  启动REPL可以通过Kotlin编译器提供的kotlinc命令或在IntelliJ IDEA工具中选择Tools→Kotlin→Kotlin REPL菜单。打开命令提示行输入kotlinc命令,如图3-1所示。启动REPL,Kotlin REPL提供一些前面带有冒号(:)的管理指令,例如“:quit”指令是退出REPL,“:help”指令是帮助。
  在REPL窗口中可以输入Kotlin代码,按Enter键后马上会运行并输出结果,测试代码如下:
  >>> 1+1 ①
  2 ②
  >>> val str = "Hello, world." ③
  >>> println(str) ④
  Hello, world. ⑤
  >>>
  “>>>”后面是Kotlin代码,第①行、第③行和第④行都是代码,而第②行、第⑤行是运行结果。
  图3-1 在命令提示行中启动REPL
  3.2 使用IntelliJ IDEA实现
  3.1节介绍了如何以交互式方式编写和运行Kotlin程序代码,交互式方式在很多情况下适合学习Kotlin语言,但是如果要使用Kotlin语言开发实际项目,交互式方式就不适合了。此时,需要创建项目,在项目中创建文件,编译文件,运行文件。
  首先介绍如何使用IntelliJ IDEA创建Kotlin项目以编写和运行HelloWorld程序。
  3.2.1 创建项目
  首先在IntelliJ IDEA中通过项目(Project)管理Kotlin源代码文件,因此需要先创建一个Kotlin项目,然后在项目中创建一个Kotlin源代码文件。
  IntelliJ IDEA创建项目步骤是:打开IntelliJ IDEA的欢迎界面(见图3-2),单击Create New Project打开如图3-3所示的对话框。一般第一次启动就可以看到这个界面,如果没有,也可以通过选择菜单File→New→Project命令来打开。
  由于要编写的HelloWorld程序属于基于Java虚拟机的Kotlin项目,因此需要创建Kotlin/JVM类型项目,在图3-3中选择Java中的Kotlin/JVM(见图3-4(a))或者选择Kotlin中的Kotlin/JVM(见图3-4(b))都可以创建Kotlin/JVM类型项目。
  图3-2 IntelliJ IDEA欢迎界面
  图3-3 选择项目类型
  (a)选择Java中的Kotlin/JVM (b)选择Kotlin中的Kotlin/JVM
  图3-4 选择Kotlin/JVM类型项目
  这里选择如图3-4(b)所示的界面Kotlin/JVM类型项目,然后单击Next按钮进入如图3-5所示的界面。在Project name中输入项目名,本例中是项目ch3.2,Project location中选择保存项目路径,选择合适的Project SDK后,单击Finish按钮创建项目,如图3-6所示。
  图3-5 输入项目命名
  图3-6 项目创建完成
  3.2.2 创建Kotlin源代码文件
  项目创建完成后,需要创建一个Kotlin源代码文件执行控制台输出操作。选择刚刚创建的项目,选中src文件夹,然后选择菜单File→New→Kotlin File/Class,打开新建Kotlin文件或类对话框,如图3-7所示,在对话框中的Name文本框中输入HelloWorld,Kind(类型)下拉框中选择File(文件),然后单击OK按钮创建文件。如图3-8所示,在左边的项目文件管理窗口中可以看到刚刚创建的HelloWorld.kt源代码文件。
  图3-7 新建Kotlin文件或类
  图3-8 HelloWorld.kt源代码文件
  3.2.3 编写代码
  要想让Kotlin源代码文件能够运行起来,需要使用main函数。main函数是程序的入口,它与C++语言中的main函数类似,都不属于任何的类,称为顶层函数(top-level function)。但是与Java不同,Java中程序的入口也是main函数,但Java中所有的函数都必须在某个类中定义,main函数也不例外。
  编写代码如下:
  fun main(args: Array) {
  println("Hello, world!")
  }
  如果是Java,实现同样功能的代码如下:
  public class HelloWorld {
  public static void main(String[] args) {
  System.out.print("Hello, world!");
  }
  }
  3.2.4 运行程序
  程序编写完成就可以运行了。如果是第一次运行,则需要右击左边的项目文件管理窗口中的HelloWorld.kt文件,在弹出的菜单中选择Run 'HelloWorldKt'运行,运行结果如图3-9所示,在左下面的控制台窗口输出“Hello, world!”字符串。
  图3-9 运行结果
  注意
  如果已经运行过一次,也可直接单击工具栏中的Run 按钮,或选择菜单Run→Run 'HelloWorldKt',或使用快捷键Ctrl+F10,就可以运行上次的程序。
  ……

前言/序言

  前 言
  2017年5月19日的Google I/O大会上,谷歌公司宣布将Kotlin语言作为Android应用开发一级语言。国内很快掀起了学习Kotlin的热潮,就像2014年苹果公司发布Swift语言一样,一夜之间出现了很多团队翻译官方文档、录制视频课程。听说了这个消息我非常激动,也想写一本Kotlin立体图书,包括电子书、配套视频、课件和答疑服务。经过了6个多月的专注写作和实践终成此书,6个月来放弃很多对家人的陪伴,感谢她们的理解和 宽容。
  由于工作的原因,我在2015年就接触到Kotlin语言,被它的简洁理念深深吸引。我将以前用Java编写的QQ聊天工具用Kotlin语言重新编写,代码减少了30%。Kotlin语言的设计者们设计这门语言的目的是取代Java。诞生了20多年的Java虽然还是排名第一的语言,但仍被人诟病,现在从如下几个方面讨论一下。
  1. 对函数式编程的支持
  Java对函数式编程的支持不够及时和彻底,直到Java 8才开始支持函数式编程,但Java 8中并不支持函数类型,不能定义高阶函数;而Kotlin支持函数式编程。试比较以下代码:
  //Java面向对象代码片段
  String userId = (String) jsonObj.get
  ("user_id");
  //从clientList集合中删除用户
  for (ClientInfo info : clientList) {
  if (info.getUserId().equals
  (userId)) {
  clientList.remove(info);
  break;
  }
  }
  //Kotlin函数式编程代码片段
  val userId = jsonObject["user_id"] as String
  val clientInfo = clientList.first {
  it.userId == userId
  }
  //从clientList集合中删除用户
  clientList.remove(clientInfo)
  从上述代码比较可见,函数式编程中不再需要那些for和if等流程控制语句,对于数据的处理更加简洁。函数式编程并不能完全取代面向对象编程,函数式编程擅长进行数据处理,如核心业务逻辑、算法实现等;而面向对象编程擅长构建UI界面编程、搭建系统架构等。
  2. 异常处理的理念
  Java把异常分为受检查异常和运行期异常,编译器强制要求必须捕获或抛出受检查异常。经过多年的实践,开发者发现即便是捕获了那些受检查异常,处理起来也力不从心。受检查异常会使得程序结构变得混乱,代码大量增加。而Kotlin把所有的异常都看作是运行期异常,编译器不会强制要求捕获或抛出任何异常,开发人员可以酌情考虑是否捕获和处理异常。
  下面再比较一些代码:
  //Java文件复制代码片段
  try (FileInputStream fis = new
  FileInputStream("./TestDir/src.zip");
  BufferedInputStream bis = new
  BufferedInputStream(fis);
  FileOutputStream fos = new
  FileOutputStream("./TestDir/
  subDir/src.zip");
  BufferedOutputStream bos = new
  BufferedOutputStream(fos)) {
  //准备一个缓冲区
  byte[] buffer = new byte[1024];
  //首先读取一次
  int len = bis.read(buffer);
  while (len != -1) {
  //开始写入数据
  bos.write(buffer, 0, len);
  //再读取一次
  len = bis.read(buffer);
  }
  } catch (FileNotFoundException e) {
  e.printStackTrace();
  } catch (IOException e) {
  e.printStackTrace();
  }
  //Kotlin函数式编程代码片段
  FileInputStream("./TestDir/src.zip")
  .use { fis ->
  FileOutputStream("./TestDir/subDir/
  src.zip").use { fos ->
  //复制到输出流
  fis.buffered().copyTo
  (fos.buffered())
  println("复制完成")
  }
  }
  上述代码实现了文件复制,Java代码需要21行,而Kotlin代码只需要7行。
  3. 对可空类型的支持
  空指针异常是Java最令人头痛的问题之一。Java数据类型可以接收空值;而Kotlin数据类型默认不能接收空值,是非空数据类型,这样就保证了数据类型的安全,防止空指针异常的发生。
  这里只是比较了Java和Kotlin几个最突出的区别,更多的不同和细微的差别还需要读者阅读此书,并自己编写其中的每一个示例,感受Kotlin与Java的不同,感受Kotlin的 简洁。
  本书服务网址
  为了更好地为广大读者提供服务,本书建立了一个服务网址www.zhijieketang/group/6,希望读者对书中内容发表评论,提出宝贵意见。
  源代码
  书中包括了200多个完整的案例项目源代码,读者可以到本书网站www.zhijieketang/ group/6免费注册下载。
  勘误与支持
  网站www.zhijieketang/group/6中建立了一个勘误专区,可以及时地把书中的问题、失误和勘误反馈给广大读者。如果读者发现了任何问题,均可以在网上留言,也可以发送电子邮件到eorient@sina.com,也可以通过作者的新浪微博(@tony_关东升)或微信(q270258799)联系作者与编辑。
  致谢
  本书主要由关东升著。此外,智捷课堂团队的赵志荣、赵大羽、关锦华、闫婷娇、王馨然、关秀华、刘佳笑和赵浩丞参与了部分内容的编写。感谢清华大学出版社的盛东亮编辑给本书提供的宝贵意见。感谢赵浩丞手绘了书中全部草图,并从专业的角度修改书中图片,力求更加真实完美地奉献给广大读者。感谢我的家人容忍我的忙碌以及对我的关心和照顾,使我能抽出这么多时间,投入全部精力,专心编写此书。
  由于时间仓促,书中难免存在不妥之处,请读者原谅,并提出宝贵意见。
  关东升
  2018年6月