何为 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 大佬学习笔记
等等,这些内容均收费分享给大家,须要完整版的敌人,点这里能够看到全部内容。