书+视频学习+学习效果测试+开发闯关测试+项目实战,贴心跟踪读者学习效果,学习Kotlin这一本就够!
基于新的Kotlin版本
一本全程视频陪伴,贴心跟踪初学者学习效果的Kotlin开发书
赠送近70小时视频课程,包括Kotlin和Android开发,供读者学习使用
通过Kotlin开发题库提供大量的测试题以及过关系统,读者可以用通关的方式更有效地学习书中的知识,提高学习的效率
随时互动答疑,有问题的学员可以通过欧瑞科技的问答社区(https://geekori.com)提问,会有专人回答读者提出的问题,以及通过博客系统总结书中学到的知识,同时,提出问题、回答问题以及撰写的博客越多,就会增加读者的积分,以后学习李宁老师其他的课程和获取其他资源,会有更大的优惠。
本书分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版》等。
第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
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爱好者学习、程序员阅读,也可以作为大专院校和培训学校的教材。
作者
这本书的外观设计简洁大气,封面色调沉稳,书名清晰醒目,给人一种专业、值得信赖的感觉。我选择这本书,主要是因为它“入门精要”的定位,我目前对Kotlin的了解非常有限,希望能够从基础开始,建立起对这门语言的扎实理解。我非常期待书中能够提供清晰的代码示例,并且能够深入浅出地讲解每一个语法点。我特别关注书中对于Kotlin的类型系统和面向对象特性的讲解,希望它能帮助我理解Kotlin是如何处理数据和组织代码的。我希望书中能够包含一些关于Kotlin在实际开发中常用场景的介绍,例如如何利用Kotlin编写更简洁、更安全的Android应用,或者如何使用Kotlin进行服务器端开发。我还在期待,书中能够给我一些关于如何进一步学习Kotlin的建议,比如推荐一些优秀的在线资源、社区或者进阶书籍。这本书对我来说,不仅仅是学习Kotlin的工具,更是我探索编程世界的一个重要伙伴,我希望它能激发我持续学习的热情,并为我未来的技术发展奠定坚实的基础。
评分说实话,我之前接触过其他一些编程语言,但总是感觉入门门槛有点高,学习过程中会遇到很多瓶颈。这次选择Kotlin,主要是听朋友说它在Android开发领域非常流行,而且语法更简洁,学习起来应该会更容易一些。我购买这本书,就是希望能它能帮我快速地建立起对Kotlin语言的整体认知,理解它与其他语言的差异和优势。我特别希望书中能提供一些关于Kotlin在实际项目开发中的应用场景,比如如何用Kotlin来构建一个简单的应用程序,或者如何利用Kotlin的一些特性来优化现有的代码。我非常期待书中能够讲解Kotlin的一些高级特性,比如协程,我知道这对于实现高并发和异步编程非常重要,而且学习曲线可能相对陡峭,所以如果书中能提供清晰的解释和实用的例子,对我来说将非常有价值。我还希望书中能够涉及一些关于Kotlin与Java互操作性的内容,毕竟Java在很多领域都有广泛的应用,了解如何将Kotlin无缝集成到已有的Java项目中,对于我未来的开发工作会很有帮助。总而言之,我希望这本书能够帮助我不仅掌握Kotlin的基础语法,更能理解它在实际开发中的强大能力,为我打开新的编程视野。
评分我是一名对编程充满好奇心的学习者,虽然之前有过一些零散的编程接触,但始终没有系统地学习过一门完整的语言。Kotlin吸引我的地方在于它的现代化和高效性,我听说它在很多新兴技术领域都有应用,比如服务器端开发、数据科学等等,这让我觉得它是一门非常有潜力的语言。我希望这本书能够像一位耐心的老师,一步一步地引导我,让我能够理解Kotlin的核心概念。我非常看重书中关于“精要”二字的体现,这意味着它应该会抓住Kotlin最核心、最常用的部分进行讲解,而不是贪多嚼不烂。我希望书中能提供一些循序渐进的练习题,让我能够巩固学到的知识,并且逐渐提升自己的编程能力。我特别关注书中对Kotlin函数式编程风格的介绍,我知道这是一种非常优雅和强大的编程范式,但对我来说可能会比较陌生,所以我希望书中能用通俗易懂的方式来解释它,并提供一些实际的例子。我还在期待,书中能够为我介绍一些Kotlin常用的库或者框架,让我知道在学习完语言本身之后,还有哪些工具可以帮助我更高效地进行开发。这本书对我来说,不仅是一本教材,更是一次探索新世界的机会。
评分这本书的排版布局真的让我眼前一亮,每一页都经过了精心设计,文字、代码块和图示之间的比例恰到好处,读起来非常舒服。我尤其喜欢它在讲解某个新概念的时候,会先给出一个简短的概述,然后迅速切入一个具体的代码示例,并且在代码块旁边进行详细的解释,这对于我这种动手能力比较强的人来说,简直是福音。我一直觉得,学习编程就像学游泳,光看理论肯定是不行的,必须得下水去游。这本书在这方面做得非常好,我翻看了几页,发现它提供的代码示例都是那种小巧精悍,但又能够清晰展示某个技术点的,我迫不及待地想把这些代码一个个敲进去,看看它们运行起来是什么效果。我特别关注书中对于面向对象编程的讲解,因为这涉及到很多核心的编程思想。我希望它能用非常生动形象的方式来解释类、对象、继承、多态等概念,甚至可以通过一些生活中的例子来类比,这样我就不会觉得这些概念太抽象了。另外,我注意到书中似乎用了一些色彩来区分不同的代码元素,这对于提高代码的可读性非常有帮助,我希望这种做法能够贯穿全书。总的来说,这本书给我的第一印象就是,它非常注重学习者的体验,细节之处都做得相当到位。
评分这本书的封面设计很吸引人,那种沉静而有力的蓝色背景,搭配上简洁明了的书名,让人一眼就能感受到它是一本专业且有深度的技术书籍。我当初选择它,很大程度上是被它“入门精要”这几个字所吸引,我一直觉得学习一门新的编程语言,最怕的就是一开始就陷入概念的海洋,被晦涩的术语和复杂的理论吓退。所以,我特别期待这本书能够以一种非常直观、易懂的方式,把我引入Kotlin的世界。我希望它能从最基础的语法开始,比如变量的声明、基本的数据类型,还有函数的使用等等,能够给我一个清晰的框架。更重要的是,我希望它能通过大量的代码示例,让我能够边学边练,而不是仅仅停留在理论层面。比如,当讲到条件语句和循环时,我希望书中能给出一些实际应用场景的例子,例如如何用循环来处理一个列表,或者如何用条件语句来根据用户的输入做出不同的响应。这样,我不仅能理解代码的语法,更能体会到它在解决实际问题中的作用。我还在期待,书中能够为我揭示Kotlin的一些独特之处,比如它的空安全特性,我知道这对于避免很多常见的NullPointerException错误至关重要,所以我非常希望书中能用清晰的图示或者生动的比喻来解释这一点。总之,我希望这本书能够成为我学习Kotlin的坚实起点,让我能够快速上手,并且充满信心。
评分新书到手,一直想买这本书不过前一阵子上课忙没时间自学,现在还是打算买下来就算挤出时间也要学习,加油!
评分书很好,内容还要好好的看
评分老公很喜欢看书,程序猿同学就是爱学习,家里的书柜已经快塞不下了,80%都在京东买的,是正版,放心。就是提点建议,每次我给他领了优惠券,但是他下单从来都不点,导致白白损失好的money,京东能不能改成自动选取最优惠的优惠券使用啊,人家淘宝都这样的。毕竟有券不用的人那个啥,是吧? 还有,旧书能否开个闲鱼之类的进行交换或者折价销售。如果这样,就棒棒哒了。
评分京东自营的物品质量可靠,从物流到售后服务也都特别的到位。每次出现问题客服都会积极的帮助顾客去解决。我家现在所有物品都是京东提供,最主要是服务好,出现问题不推诿,问题解决及时态度热情。一个网店能够开的如此细微周到实数是用心在做。一个人做好容易,不容易的是一个团队都在用心做。京东从产品质量、后台客服服务、再到快递员工积极热情的工作态度真是我所遇到所有网店不能及的。祝贺京东蒸蒸日上、成为同行标榜。
评分打算入程序猿的坑,就买了,谁知道光盘放不了,然后就换货了。换的新的光盘能看,不过我看得好慢,要加油啊(? •?_•?)?。话说发现里面有个错别字,球模(正确是求模,37页)
评分安卓 我也想学 哈哈
评分书是正版的,自己清楚,图片也很清晰,挺不错的,推荐购买
评分闻着书香,感觉不错,努力学习。
评分趁着618买了一波,书不错诶。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有