在2019年Google I/O大会上,Google 宣布今后将优先采用 Kotlin 进行 Android 开发。
一,简介
Kotlin 是一种富有表现力且简洁的编程语言,不仅可以减少常见代码错误,还可以轻松集成到现有应用中。
Google 列举的 Kotlin 的优势:
- 富有表现力且简洁:可以使用更少的代码实现更多的功能。表达自己的想法,少编写样板代码。
- 更安全的代码:Kotlin 有许多语言功能,可帮助你避免null指针异常等常见编程错误。
- 可互操作:可以在 Kotlin 代码中调用 Java 代码,或者在 Java 代码中调用 Kotlin 代码。Kotlin 可完全与 Java 编程语言互操作。
- 结构化并发:Kotlin 协程让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理。
更重要的是,Jetpack Compose 仅支持 Kotlin,而不再支持 Java。 Google 提到多平台项目可使用 Kotlin 来开发。
二,概念介绍
1. 包的定义和使用
包的定义应该写在文件的顶部。
Kotlin并不要求包名和文件存放位置严格对应。
2. 程序入口
Kotlin应用的程序入口是main
方法。
另一个main方法带有参数
3. 标准输出
print
方法将传入的变量打印到标准输入流。
println
打印传入变量并且在最后添加一个换行。
4. 方法
下面是一个接受2个Int参数,返回Int的方法。
方法主体可以是一个表达式。它的返回值可以被推断出来。
方法可以没有返回值,或者说是返回一个无意义的值(Unit)。
Unit
可以忽略不写。
5. 变量
只能读的变量需要用关键字val
。它们只能被赋值1次。
可以多次赋值的变量用关键字var
可以在顶部声明变量
6. 创建类与实例
定义一个类,使用class
关键字
类的属性可以放在定义中或者类里。比如下面这个类Rectangle
,描述长方形。
默认构造器中的变量可以直接使用。这里可以直接使用面积变量perimeter
对于kotlin v.1.4.30,类的继承用冒号:
来表示。类默认都是final的,不可继承。为了继承,用open
让这个类能被继承。
7. 注释
和其他现代编程语言类似,用//
或者/**/
来注释
8. 字符串模版(String tempplates)
直接使用变量,用$
要使用表达式,需要用大括号${}
9. 条件表达式
Kotlin中,if
也可以写成一个表达式
10. for循环
使用in
使用下标
11. while循环
12. when表达式
when
看起来有点像Java里的witch
,但这两个是不同的东西。
13. 范围
检查一个数字是否在范围中,使用in
操作
检查一个数是否超出了范围
遍历一个范围
指定步进值
14. 集合
遍历一个集合
检查集合中是否包含某个对象,用in
操作
用lambda表达式对集合进行filter和map操作
15. 可为null的值和null检查
可以为null的变量,后面需要一个问号?
下面这个方法返回Int或者null
使用可能返回null的方法(上面那个方法)
或者写做
16. 类型检查和自动转换
用is
来检查某个对象是不是某个类型。 如果确定某个不可变的变量的类型,那后面使用它的时候不用再显式转换
或者用!is
再换个写法
最后分享一份《史上最详Android版kotlin协程入门进阶实战》,
目录
第一章 Kotlin协程的基础介绍
- 1.1 协程是什么
- 1.2 什么是Job 、Deferred 、协程作用域
- 1.3 Kotlin协程的基础用法
第二章 kotlin协程的关键知识点初步讲解
- 2.1 协程调度器
- 2.2 协程上下文
- 2.3 协程启动模式
- 2.4 协程作用域
- 2.5 挂起函数
第三章 kotlin协程的异常处理
第四章 kotlin协程在Android中的基础应用
- 4.1 Android使用kotlin协程
- 4.2 在Activity与Framgent中使用协程
- 4.3 ViewModel中使用协程
- 4.4 其他环境下使用协程
第五章 kotlin协程的网络请求封装
- 5.1 协程的常用环境
- 5.2 协程在网络请求下的封装及使用
- 5.3 高阶函数方式
- 5.4 多状态函数返回值方式
- 5.5 直接返回值的方式
第六章 深入kotlin协程原理(一)
- 6.1 suspend 的花花肠子
- 6.2 藏在身后的- Continuation
- 6.3 村里的希望- SuspendLambda
第七章 深入kotlin协程原理(二)
- 7.1 协程的那些小秘密
- 7.2 协程的创建过程
- 7.3 协程的挂起与恢复
- 7.4 协程的执行与状态机
第八章 Kotlin Jetpack 实战
- 8.1 从一个膜拜大神的 Demo 开始
- 8.2 Kotlin 写 Gradle 脚本是一种什么体验?
- 8.3 Kotlin 编程的三重境界
- 8.4 Kotlin 高阶函数
- 8.5 Kotlin 泛型
- 8.6 Kotlin 扩展
- 8.7 Kotlin 委托
第九章 Kotlin + 协程 + Retrofit + MVVM优雅的实现网络 请求
- 9.1 项目配置
- 9.2 实现思路
- 9.3 协程实现
- 9.4 协程 + ViewModel + LiveData实现
- 9.5 后续优化
- 9.6 异常处理
- 9.7 更新Retrofit 2.6.0