1Kotlin简介
-
在 Google I/O 2017 大会上,Google 宣布 Kotlin 成为 Android开发的官方编程语言。
-
优点:
- 简洁: 大大减少样板代码的数量。
- 安全: 避免空指针异常等整个类的错误。
- 互操作性: 充分利用 JVM、Android 和浏览器的现有库。
- 工具友好: 可用任何 Java IDE 或者使用命令行构建。
2kotlin的语法
2.1变量与不可变量
变量的申明 :变量var与不可变的变量val

-
(注意kotlin是空安全的,所以name是不可为空的String类型,如果可能为空,是String?) 。注意区分: String? String
-
Val并不是Java中的常量 ,因为我们可以重写get方法
-
常量 const val a=0,const只能修复object属性或者top_level变量,只能是String或者基本类型
-
Top level变量、方法:在Kotlin中认为一个函数或方法有时候并不是属于任何一个类,它就可以独立存在。所以在Kotlin中类似静态函数和静态属性会去掉外层类的容器,一个函数或者属性可以直接定义在一个Kotlin文件的顶层中,在使用的地方只需要import这个函数或属性即可,这个方法属性就是top level的方法,属性。如果你的代码还存在很多以“Util”后缀结尾的工具类,是时候去掉了。注意: 不需要static关键字,那么这些函数就可以当做静态函数来使用


2.2基本数据类型
-
Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。
-
在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。

- 类型转换较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型

- 字符串、字符串模块

- java的变量名与kotlin的关键字冲突

- 字符串模板

- 数组
- 创建方式
- 使用函数arrayOf()
- 使用工厂函数
- 创建方式

- 集合:Kotlin中List、Set、Map与Java中的List、Set、Map有一些不同,kotlin中为只读,只能访问集合中的内容,不能进行修改操作。 如过需要进行添加修改操作需使用Mutable(可变的)前缀,对应为: MutableList、MutableSet 、 MutableMap。 这样就可以对其进行 add 、remove等操作了


- 区间:使用 in 运算符来检测某个数字是否在指定区间内,区间格式为x..y

- 循环

2.3kotlin条件控制
*if表达式

- when表达式

2.4kotlin函数的申明

2.5函数嵌套

2.6扩展函数



2.7kotlin接口

2.8类与对象
2.8.1类与对象

2.8.2构造函数

2.8.3访问修饰符
- private
- protected
- public
- internal //kotlin特有的,一个模块的类都可以访问,,跨模块不可以访问
2.8.4伴生对象
- Kotlin废弃了static修饰符。在Kotlin的类中不允许声明静态成员或方法。需向类中添加Companion对象来包装这些静态引用。伴生对象是个实际对象的单例实例。

- Java中调用伴生对象方法

- 伴生对象编译后的Java代码

2.8.54Object类
class关键字替换为object关键字,来声明一个类,这个类就已经是单例的了。


2.8.6Kotlin中by关键字
-
动态代理

-
属性延迟加载 lazy

- Map值映射到类属性

- 可观察属性

2.8.7Kotlin特有的类

2.9Kotlin海量的集合运算符



2.10作用域函数


2.11Kotlin的空安全
Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式
- 字段后加!!像Java一样抛出空异常
- 另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

2.12Java与Kotlin交互的语法变化
获取到Java class的区别
- Java TestMain.class
- kotlin TestMain::class.java 注意:kotlin的class是kclass