书籍作者:李宁 | ISBN:9787115467522 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:7171 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书分3部分讲解Kotlin,第1部分(第1~11章)是Kotlin语言的基础部分,主要介绍了Kotlin的基础知识、语法以及大量的“语法糖”,如搭建Kotlin开发环境、数据类型、控制流、类、对象、接口、扩展、委托、Lambda表达式、操作符重载等。第2部分(第12~15章)主要介绍了如何用Kotlin开发Android App。由于Kotlin可以调用JDK中的API,所以在使用Kotlin开发Android App的过程中,很多都是调用JDK的API实现的,但开发语言使用的是Kotlin。因此,这一部分详细介绍了用Kotlin开发Android App 需要掌握的核心知识,如Activity、组件、布局、流文件、SQLite数据库、网络等技术。第3部分(第16章)是一个完整的案例:欧瑞天气。通过这个项目,可以让读者了解利用Kotlin开发Android App的全过程。
李宁,欧瑞科技创始人,极客起源IT问答社区(https://geekori.com)创始人,欧瑞学院金牌讲师,计算机专业硕士。拥有近20年软件开发经验,10年企业内训经验。曾任国内某大型软件公司项目经理。CSDN博客专家、CSDN学院签约讲师、51CTO学院特级讲师。长久以来一直从事JavaScript、Node.js、Java、Kotlin、Python、Android、iOS、C++、Hadoop、Spark、深度学习的开发和技术指导工作。对国内外相关领域的技术、理论和实践有很深的理解和研究。目前已经出版超过30本IT畅销书,主要著作包括《Kotlin程序开发入门精要》《Android深度探索 卷1和卷2》《Android开发权wei指南 第1版和第2版》等。
书+视频学习+学习效果测试+开发闯关测试+项目实战,贴心跟踪读者学习效果,学习Kotlin这一本就够!
基于新的Kotlin版本
一本全程视频陪伴,贴心跟踪初学者学习效果的Kotlin开发书
赠送近70小时视频课程,包括Kotlin和Android开发,供读者学习使用
通过Kotlin开发题库提供大量的测试题以及过关系统,读者可以用通关的方式更有效地学习书中的知识,提高学习的效率
随时互动答疑,有问题的学员可以通过欧瑞科技的问答社区(https://geekori.com)提问,会有专人回答读者提出的问题,以及通过博客系统总结书中学到的知识,同时,提出问题、回答问题以及撰写的博客越多,就会增加读者的积分,以后学习李宁老师其他的课程和获取其他资源,会有更大的优惠。
Android到现在已经发展了10年了,从最初不怎么完善发展到现在,形成了一个由成千上万的App支撑,可以运行在包括手机、平板电脑、电视、汽车、手表、无人机在内的几乎所有智能设备中的完整生态系统,这一切足以让Android的拥有者Google感到无比自豪。
不过有一件事一直让Google“很不爽”,那就是开发AndroidApp的核心语言Java并不属于Google,而属于Oracle。而且Oracle一直在和Google打关于Java的“官司”,尽管Google赢得了“官司”,但也让Google清楚地看到,如果编程语言不掌握在自己的手里,那么总会受制于人,所以Google在数年时间里进行了多次尝试,如推出了Go语言。不过Go语言和C++类似,并不适合开发AndroidApp。所以2017年5月之前,开发AndroidApp的主要编程语言仍然是Java。
然而在2017年5月的I/O大会上,Google突然宣布,Kotlin成为开发Android的一级编程语言,这就意味着,从这一刻开始,开发AndroidApp可以使用两种语言:Java和Kotlin。
那么Kotlin是什么呢?就在2017年5月的I/O大会之前,我也不太清楚这个世界上还有一种叫Kotlin的编程语言,相信大多数读者和我一样,在此之前都不太了解什么是Kotlin。其实与Kotlin类似的语言有很多,如Scala,它们都是基于JVM的语言,也就是说,Kotlin和Scala一样,都只提供了编译器,没有提供运行环境。运行Kotlin和Scala程序,需要将源代码编译成ByteCode,然后在JVM上运行。
在刚开始接触Kotlin时,我感到很奇怪,现在基于JVM的语言非常多,例如,编写了Spark的Scala语言,还有Groovy、JRuby、Clojure等,那么Google为什么单独偏爱Kotlin呢?随着我对Kotlin的深入接触,逐渐对Google选择Kotlin的决定表示认可!
Kotlin作为第二种开发AndroidApp的核心编程语言,肯定是与Java有很大差异的,而且这种差异要弥补Java的不足或增强Java的功能。所以要求都是正向的差异。
Java尽管历史悠久,应用众多,但也有很多不足的地方,例如,我们经常会遇到NullPointerException异常,这是个很讨厌的异常,产生异常的原因是因为访问了空对象的成员。Kotlin巧妙地解决了这个问题,让访问空对象的成员不再抛出异常,而是直接返回NULL。Kotlin除了解决Java的遗留问题外,还加了很多“语法糖”,例如,Kotlin支持扩展和操作符重载,这是两个非常大的“语法糖”。通过扩展,可以在没有源代码的情况下,为类添加方法和属性,通过操作符重载,可以让特定的类型支持原来没有的操作,如为字符串类型添加乘法和除法。总之,Kotlin单凭语言本身就比Java酷了不少。不过这些理由并不足以让Google对Kotlin如此偏爱,因为其他同类语言,如Scala,也同样添加了很多“语法糖”。
那么Kotlin还有什么其他特性呢?其实Kotlin不仅可以在JVM上运行,还可以直接将Kotlin源代码转换为JavaScript。这样一来,从理论上讲,Kotlin可以在任何支持JavaScript的环境中运行,如Web应用、ReactNative(Android和iOS)、微信公众号、微信小程序、Node.js、Chrome插件等。另外,还有一些地方是JavaScript做不到的,如开发本地应用。但Kotlin可以做到,Kotlin不仅仅可以生成JavaScript代码,还可以直接编译成本地代码,如Windows的exe文件、iOSApp等,这样一来,Kotlin几乎可以开发所有类型的应用了。所以从理论上来讲,Kotlin才是真正的跨平台语言,Kotlin可以直接或间接地开发各种类型的应用。
说了这么多,相信大家一定已经清楚了Kotlin的强大,以及Google为什么选择了Kotlin的原因,当然,除了技术原因外,选择Kotlin还有一个原因,就是Google的AndroidStudio是基于IntelliJIDEA的社区版本开发的,而JetBrains公司开发了IntelliJIDEA和Kotlin。所以,可以说AndroidStudio和Kotlin是师出同门,这样它们之间更容易兼容。
既然Kotlin这么强大,而且选择Kotlin的理由非常多,如开发效率高、语法优美、能跨平台开发、得到Google的强力支持。那么我们还等什么呢!赶紧通过本书将Kotlin的知识装进我们的大脑才是正确的做法!
本书适合Kotlin爱好者学习、程序员阅读,也可以作为大专院校和培训学校的教材。
作者
第1章Kotlin开发环境搭建1
1.1Kotlin概述1
1.1.1Kotlin是什么1
1.1.2为什么Kotlin突然成为热门2
1.1.3Kotlin相对于Java有哪些优势2
1.1.4Kotlin能做什么3
1.2在线运行Kotlin代码3
1.3安装和配置Kotlin6
1.3.1安装和配置JDK6
1.3.2Windows下安装和
配置Kotlin9
1.3.3MacOSX下安装和
配置Kotlin10
1.4测试Kotlin编译和运行环境10
1.4.1命令行方式使用Kotlin11
1.4.2Kotlin的REPL环境13
1.4.3在命令行中运行脚本文件14
1.4.4在浏览器中运行Kotlin程序14
1.4.5使用Node.js运行Kotlin程序16
1.4.6在微信小程序中运行Kotlin
程序17
1.4.7用Kotlin开启全栈开发模式21
1.5Kotlin中的语法糖22
1.6Kotlin的集成开发环境(IDE)24
1.6.1IntelliJIDEA的Kotlin基础开发
环境25
1.6.2使用AndroidStudio和Kotlin开发
AndroidApp29
1.7小结34
第2章Kotlin基础知识35
2.1Kotlin的基本语法35
2.1.1定义变量35
2.1.2定义函数36
2.1.3注释37
2.2基础数据类型37
2.2.1数值类型38
2.2.2字符类型39
2.2.3布尔类型41
2.2.4数组41
2.2.5字符串42
2.2.6字符串模板43
2.3包(Package)43
2.4控制流46
2.4.1条件语句46
2.4.2when语句46
2.4.3for循环48
2.4.4while循环49
2.5小结50
第3章类和接口51
3.1类的声明51
3.2构造器51
3.2.1主构造器51
3.2.2第二构造器53
3.2.3Kotlin中的Singleton模式54
3.2.4Kotlin函数中的默认参数55
3.2.5创建类的实例58
3.3类成员58
3.3.1属性的基本用法58
3.3.2属性的getter和setter形式60
3.3.3保存属性值的字段60
3.3.4函数61
3.3.5嵌套类63
3.4修饰符(Modifiers)64
3.5类的继承65
3.5.1Kotlin类如何继承65
3.5.2重写方法65
3.5.3重写属性66
3.6接口67
3.7抽象类68
3.8小结68
第4章枚举类和扩展69
4.1枚举类69
4.1.1枚举类的基本用法69
4.1.2为枚举值指定对应的数值70
4.1.3枚举类的其他功能71
4.2扩展72
4.2.1扩展原生API72
4.2.2扩展自定义类73
4.2.3成员函数冲突的解决方案75
4.2.4扩展属性76
4.2.5扩展伴随对象
(CompanionObject)76
4.2.6扩展的范围77
4.2.7在类中使用扩展77
4.2.8调用特定类的成员函数78
4.2.9扩展成员的继承79
4.3小结80
第5章数据类和封闭类81
5.1数据类(DataClass)81
5.1.1使用数据类81
5.1.2对象复制84
5.1.3数据类成员的解构85
5.2封闭类(SealedClasses)86
5.3小结86
第6章泛型87
6.1泛型基础87
6.2类型变异88
6.3类型投射90
6.4星号投射92
6.5泛型函数92
6.6泛型约束93
6.7小结93
第7章对象和委托94
7.1对象94
7.1.1对象表达式94
7.1.2声明匿名对象97
7.1.3访问封闭作用域内的变量97
7.1.4陪伴对象99
7.2委托99
7.2.1类的委托99
7.2.2委托属性100
7.2.3委托类的初始化函数102
7.2.4委托的前提条件104
7.3标准委托104
7.3.1惰性装载105
7.3.2可观察属性105
7.3.3阻止属性的赋值操作106
7.3.4Map委托107
7.3.5MutableMap委托108
7.4小结108
第8章高阶函数与Lambda表达式109
8.1高阶函数109
8.2Lambda表达式与匿名函数110
8.2.1函数类型111
8.2.2Lambda表达式的语法111
8.2.3匿名函数112
8.2.4闭包(Closure)113
8.3小结113
第9章函数114
9.1函数基本用法114
9.2使用中缀标记法调用函数114
9.3单表达式函数115
9.4函数参数和返回值116
9.4.1可变参数116
9.4.2返回值类型117
9.5函数的范围117
9.5.1局部函数117
9.5.2成员函数118
9.6泛型函数118
9.7内联函数119
9.7.1让Lambda表达式内联进
函数119
9.7.2内联部分Lambda表达式121
9.7.3非局部返回
(Non-localreturn)124
9.7.4实体化的类型参数
(Reifiedtypeparameter)125
9.7.5内联属性126
9.8小结127
第10章其他Kotlin技术(1)128
10.1数据解构128
10.2集合130
10.3值范围132
10.3.1值范围的应用132
10.3.2值范围的工作原理134
10.3.3常用工具函数135
10.4类型检查与类型转换136
10.4.1is与!is操作符136
10.4.2智能类型转换138
10.4.3强行类型转换139
10.5this表达式140
10.6相等判断140
10.7操作符重载141
10.7.1一元操作符重载141
10.7.2二元操作符142
10.7.3方括号操作符重载144
10.7.4赋值操作符重载146
10.7.5逻辑操作符重载147
10.8小结149
第11章其他Kotlin技术(2)150
11.1null值安全性150
11.1.1可为null的类型与不可为null
的类型150
11.1.2在条件语句中进行null检查151
11.1.3安全调用操作符152
11.1.4Elvis操作符152
11.1.5!!操作符153
11.1.6安全的类型转换153
11.1.7可为null的类型构成的集合153
11.2异常类153
11.3注解(Annotations)155
11.3.1使用注解156
11.3.2注解类的构造器157
11.3.3Lambda表达式158
11.4反射(Reflection)158
11.4.1类引用(ClassReference)159
11.4.2枚举类成员159
11.4.3动态调用成员函数161
11.4.4动态调用成员属性161
11.5小结163
第12章Android的窗口——Activity164
12.1什么是Activity164
12.2Activity的基本用法164
12.2.1创建一个不包含任何Activity
的Android工程165
12.2.2手动创建Activity167
12.2.3创建和加载布局168
12.2.4在AndroidManifest文件中注册
Activity172
12.2.5编译和运行Android工程172
12.2.6为Activity添加新组件173
12.2.7为Activity添加逻辑代码174
12.2.8为Activity添加Toast175
12.2.9关闭Activity178
12.3使用Intent连接多个Activity178
12.3.1使用显式Intent179
12.3.2使用隐式Intent182
12.3.3为隐式Intent设置更多的过滤
条件185
12.3.4使用隐式Intent访问
系统App187
12.4向Activity中传递数据189
12.5从Activity返回数据191
12.6Activity的生命周期192
12.7记录当前活动的Activity196
12.8小结197
第13章AndroidApp的装饰工具——
UI组件与布局198
13.1如何编写程序界面198
13.2常用的UI组件198
13.2.1文本显示组件
(TextView)198
13.2.2按钮组件(Button)202
13.2.3文本编辑组件(EditText)206
13.2.4图像组件(ImageView)210
13.2.5进度条组件(ProgressBar)213
13.2.6对话框组件(AlertDialog)216
13.3布局详解217
13.3.1线性布局(LinearLayout)217
13.3.2相对布局(RelativeLayout)222
13.3.3帧布局(FrameLayout)226
13.3.4百分比布局
(PercentFrameLayout)227
13.4小结230
第14章永久保存数据的方式——
持久化技术231
14.1SharedPreferences存储231
14.1.1将数据存储到SharedPreferences
中231
14.1.2从SharedPreferences读取
数据234
14.1.3利用SharedPreferences存取用户名
和密码235
14.2文件流操作239
14.2.1openFileOutput和openFileInput
方法239
14.2.2读写SD卡上的文件242
14.3App权限的授予和拒绝248
14.4读写JSON格式的数据250
14.5SQLite数据库257
14.5.1SQLite数据库管理
工具257
14.5.2创建SQLite数据库和
数据表261
14.5.3向SQLite数据表中插入
数据264
14.5.4删除SQLite数据表中的
数据265
14.5.5更新SQLite数据表中的
数据266
14.5.6查询SQLite表中的数据267
14.5.7将数据库与App一起
发布268
14.6小结270
第15章连接外部世界——网络技术271
15.1WebView组件271
15.2使用HTTP与服务端进行交互273
15.2.1使用HttpURLConnection273
15.2.2使用OkHttp276
15.3小结282
第16章项目实战——欧瑞天气App283
16.1项目概述283
16.2添加依赖284
16.3实现主窗口285
16.4显示地区列表286
16.4.1描述城市信息的数据类286
16.4.2处理JSON格式的城市列表
信息286
16.4.3天气信息描述类288
16.4.4获取城市信息的对象290
16.4.5在ListView组件中显示地区
列表293
16.5显示天气信息298
16.6小结303