Kotlin入门到精通+高级Kotlin强化实战(附Demo)
何为Kotlin?
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
为何说Kotlin非常适合于Android?
基本上,这是因为Kotlin的所有特性都非常适合于Android生态圈。Kotlin的库非常小,我们在开发过程中不会引入额外的成本。其大小相当于support-v4库,我们在很多项目中所使用的库都比Kotlin大。除此之外,Android Studio(官方的Android IDE)是基于IntelliJ构建的。这意味着我们的IDE对该语言提供了非常棒的支持。我们可以很快就配置好项目,并且使用熟悉的IDE进行开发。我们可以继续使用Gradle以及IDE所提供的各种运行与调试特性。这与使用Java开发应用别无二致。归功于互操作性,我们可以在Kotlin代码中使用Android SDK而不会遇到任何问题。实际上,部分SDK使用起来会变得更加简单,这是因为互操作性是非常智能的,比如说它可以将getters与setters映射到Kotlin属性上,我们也可以以闭包的形式编写监听器。
如何在Android开发中使用Kotlin?
过程非常简单,只需按照下面的步骤来即可:
- 从IDE plugins中下载Kotlin插件
- 在模块中创建Kotlin类
- 使用“Configure Kotlin in Project…”
- 开始编码
为什么选择 Kotlin?
简洁:大大减少样板代码的数量。
安全:避免空指针异常等整个类的错误。
互操作性:充分利用 JVM、Android 和浏览器的现有库。
工具友好:可用任何 Java IDE 或者使用命令行构建。
Kotlin 在Android开发中那些让人舒适的地方
1.字符模板
开发中难免需要根据多个字段去拼接一条字符串做展示,在过长或者过于复杂的数据逻辑的时候,用Java实现起来都过于冗长。Kotlin 使用 $ 放在变量名的前面去表达字符串中的变量和表达式,从而简化了这一过程。
2.空安全
在使用Java开发Android的过程中,避免不了大量的空安全判定代码,介于Kotlin要很好的兼容Java,在这个问题上Kotlin设计一整套新的类型系统(这里不作研究)来完善优化它。
所有的类型都分为可空和不可空类型,并且针对不可空类型强制要求初始化,在一开始就让开发者高标准的、严谨的使用变量,是一种规范性的要求。但是可空类型可能会在程序中更广泛的应用,针对这一点,Kotlin也有Elvis 操作符来进行安全访问或者避免空值情况。
3.延迟加载
这一点可以说是对不可空类型的更进一步优化,开发中总有一些变量是在某些时机才会被初始化,而不是类加载的时候就加载。延迟加载是很好的东西,可以省去初始化的成本,在变量真正被需要的时候才被初始化。
4.方便易读的循环
Kotlin有区间的概念,这个概念让创建循环更加易读方便。
5.强大易用的迭代器
遍历集合是基操,对于一些稍微复杂一点的数据逻辑,Java实现起来并不友好。
当然后面有了RxJava来进行补救,不过Kotlin做的似乎要更好一点。(这里就不讨论Kotlin的集合框架架构了)
6.默认参数
重载是很比较常见的操作,但是有时候这种方式会出现很多相同的模板代码。Kotlin的默认参数,可以给参数指定默认值
,并且在调用的时候像给变量赋值一样给参数赋值\`而不用像Java一样非要按照顺序去传值。
并且因为具有默认值的原因,所以调用的时候可以根据具体情况传递参数
,更加灵活、更加易读和简洁。
7.Data Class
开发中Bean文件是必不可少的,但是Java的Bean文件大部分都是模版代码,虽然有插件自动生成,但是依然会觉得比较繁琐,Kotlin可以将这些类申明为Data类,这些类会默认实现equals(),hashCode(),toString() 和copy() 方法,从几十行Java代码简洁到几行代码,Kotlin只用声明 一个data class
8.简短而强大的标准函数库
这是Kotlin提供的函数库,使用后会简化不少的样板代码。稍微不一样的地方是它们的this和it各自指向不一样,以及返回值得不一样,使用得时候根据具体得情况来就可以了。
9.通吃的when
对于Java的Stwich再熟悉不过,但是它使用起来有比较多的限制,有时候面对复杂的逻辑会显得乏力。
Kotlin的when表达式可以匹配几乎任何东西(字面值,枚举,数字,范围,类型,表达式,甚至函数(kotlin函数至上))。
10.扩展
扩展可能是最受欢迎的一个特性,因为它可以让你少写很多工具类,并且让代码看起来更易读,更简洁。比如做一个防止重复点击的操作。
11.简单的Bundle 快速的Parcelable
一开始我并没有注意到这个特性,因为项目是组件化开发,在跳转传值上都采用了ARouter,但是当我发现Kotlin对这个做的改造的时候还是非常开心~
小总结:
如上所述,Kotlin在很多方面都简化了Android的开发工作。它会提升你的生产力,并且可以通过非常不同且更加简单的方式来解决一些常见的问题。
那么我们该如何学习Kotlin呢?
如果你是因为缺少学习资料,而我正好薅到这本谷歌内部大佬根据实战编写的Kotlin宝典,从入门到精通,教程通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读者快速入门,是你学习Kotlin的葵花宝典,快收藏起来!!!
今天分享的一共分为两部分:字节跳动厂内部超高质量Kotlin笔记、谷歌大佬编写高级Kotlin强化实战(附Demo)。
一、字节跳动厂内部超高质量Kotlin笔记
首先目录乘上:
1.准备开始
主要内容:基本语法、习惯用语、编码风格
2.基础
主要内容:基本类型、包、控制流、返回与跳转
3.类和对象
主要内容:类和继承、属性和字段、接口、可见性修饰词、扩展、数据对象、泛型、嵌套类、枚举类、对象表达式和声明、代理模式、代理属性
4.函数和lambda表达式
主要内容:函数、高阶函数与 lambda 表达式
5.其它
主要内容:多重申明,Ranges,类型检查和自动转换,This表达式,等式,运算符重载,空安全,异常,注解,反射,动态类型
6.互用性
主要内容:动态类型
7.工具
主要内容:使用Maven、使用 Ant、使用 Gradle、使用Griffon
8.FAQ
主要内容:与java对比、与Scala对比
点击查看:字节跳动厂内部超高质量Kotlin笔记
基础知识掌握之后就是靠实战提升了!
二、谷歌大佬编写高级Kotlin强化实战(附Demo)
照样目录乘上:
第一章 Kotlin 入门教程
Kotlin 概述
- Kotlin 特点
- 学习 Kotlin 的意义
Kotlin 与 Java 比较
- 打印日志
- 定义常量与变量
- null 声明
- 空判断
- 字符串拼接
- 三元表达式
- 多重条件
- 更灵活的 case 语句
- for 循环
- 更方便的集合操作
- 遍历
- 方法定义
- constructor 构造器
- Get Set 构造器
- 操作符
- 换行
巧用 Android Studio
- 为已有基于 Java 的 Android 项目添加Kotlin 支持
- 将 Java 文件转成 Kotlin 文件
认识 Kotlin 基本类型
- 基本类型代码演练
走进 Kotlin 的数组
- Kotlin 数组的创建技巧
- Kotlin 数组的遍历技巧
- 数组代码演练
走进 Kotlin 的集合
- 集合的可变性与不可变性
- 集合排序
- 集合中的 Set 与 Map
- 集合问题
- 完整代码
基础语法
- 所有 Kotlin 类都是对象 (Everything in Kotlin is an object)
- 可见性修饰符 (Visibility Modifiers)
- 变量定义 (Defining Variables)
- 空安全 (Null Safety)
- 类型检查与转换 (Type Checks and Casts)
- if 判断
- for 循环
- when
- 相等性 (Equality)
- 函数 (Functions)
- 类 (Classes)
- 继承 (Inheritance)
- This 表达式 (Expression)
- 数据类 (Data Class)
- 扩展 (Extensions)
- 委托 (Delegation)
第二章 Kotlin 实战避坑指南
- 方法入参是常量,不可修改
- 不要 Companion 、INSTANCE ?
- Java 重载,在 Kotlin 中怎么巧妙过渡一下?
- Kotlin 中的判空姿势
- Kotlin 复写 Java 父类中的方法
- Kotlin “狠”起来,连TODO 都不放过!
- is、as\` 中的坑
- Kotlin 中的 Property 的理解
- also 关键字
- takeIf 关键字
- 单例模式的写法
第三章 项目实战《Kotlin Jetpack 实战》
从一个膜拜大神的 Demo 开始
- 简介
- 工程结构
Kotlin 写 Gradle 脚本是一种什么体验?
- Kotlin 编写 Gradle 脚本的优势
- 实战前的准备
- 开始重构
- Kotlin DSL 实战--依赖管理
Kotlin 编程的三重境界
- 前期准备
- 为工程添加 Kotlin 支持
Kotlin 高阶函数
- 函数类型,高阶函数,Lambda,它们分别是什么?
- 为什么要引入 Lambda 和 高阶函数?
- 带接收者(Receiver)的函数类型:A.(B,C) -> D
- HTML Kotlin DSL 实战
Kotlin 泛型
- 遥控器的故事:泛型
- 招聘的故事:泛型的不变性(Invariant)
- 搞定招聘:泛型的协变(Covariant)
- 填志愿的故事:泛型的逆变(Contravariant)
- 使用处型变(Use-site Variance)
- Kotlin 泛型实战
Kotlin 扩展
- 扩展是什么?
- 顶层扩展 (Top Level Extension)
- 顶层扩展的原理是什么?
- 类内扩展 (Declaring extensions as members)
- 扩展函数 + SharedPreferences
- 扩展函数 + Spannable
Kotlin 委托
- 委托类(Class Delegation)
- 委托属性(Property Delegation)
- 自定义委托属性
- 委托属性 + SharedPreferences
协程“不为人知”的调试技巧
- 协程 JVM 参数
- Kotlin 1.4 协程调试
图解协程:suspend
- 线程 & 协程
- 异步代码 & 回调地狱
- suspend 的本质
- CPS 转换
- 字节码反编译
- 协程状态机动画演示
点击查看:高级Kotlin强化实战(附Demo)
由于篇幅较长,就暂时只展示这些。最后还有耗时一年多整理的一系列Android学习资源:
Android源码解析、Android第三方库源码笔记、Android进阶架构师七大专题学习、历年BAT面试题解析包、Android大佬学习笔记
等等,这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。
以上是 Kotlin入门到精通+高级Kotlin强化实战(附Demo) 的全部内容, 来源链接: utcz.com/z/267603.html