代码

飞飞GUY/KotlinPractice - Gitee.com

基础语法

声明变量

内置数据类型

只读变量

类型推断

编译时常量

查看kotlin字节码

kotlin的引用类型与基本数据类型

表达式

函数头

string模板

函数参数

Unit函数

Nothing类型

反引号中的函数名

匿名函数

函数类型与隐式返回

函数参数

it关键字

类型推断

lambda

定义参数是函数的函数

简略写法

函数内联

函数引用

函数类型作为返回类型

闭包

lambda与匿名内部类

null

可空性

kotlin的null类型

null安全

安全调用操作符?.

使用let的安全调用

使用非空断言操作符

使用if判断null值情况

使用合并操作符

异常

先决条件函数

字符串操作

substring

split

replace

字符串比较

forEach

数字类型

安全转换函数

double类型格式化

标准函数库

apply

let

run

with

also

takeif

takeUnless

集合

list集合

list创建与元素获取

可变列表

mutator函数

集合遍历

解构

Set集合

set创建与元素获取

可变集合

集合转变

数组类型

map集合

map的创建

读取map的值

遍历

可变集合

定义类

field

计算属性

防范竞态条件

初始化

主构造函数

在主构造函数里定义属性

次构造函数

默认参数

初始化块

初始化顺序

延迟初始化

惰性初始化

初始化陷阱1

初始化陷阱2

初始化陷阱3

继承

函数重载

类型检测

类型转换

智能类型转换

kotlin层次

对象

object关键字

对象声明

对象表达式

伴生对象

嵌套类

数据类

copy

解构声明

枚举类

运算符重载

代数数据类型

使用数据类条件

密封类

接口(这个要重新学)

接口定义

默认实现

抽象类(这个要重新学)

泛型(这个要重新学)

定义泛型类

泛型函数

多泛型参数

泛型类型约束

vararg关键字与get函数

[]操作符取值

in

out

invariant(不变)

为啥使用in&out?

reified

拓展函数

定义拓展函数

泛型拓展函数

带接收者的函数字面量

拓展属性

可空类拓展

infix关键字

定义拓展文件

重命名拓展

kotlin标准库中的拓展

DSL

带接收者的函数字面量

变换

函数式编程

函数类别

变换

map

floatMap

过滤

filter

合并

zip

fold

为什么要使用函数编程

序列

generateSequence

互操作性与可空性

类型映射

属性、异常互操作

属性访问

@JvmName

@JvmField

@JvmOverloads

@JvmStatic

@Throws

函数类型

函数类型操作

kt与java的区别

1、java有package/class保护作用域

kt像脚本语言,如果没有package/class的情况下很容易函数重名覆盖其他函数,可以通过写函数闭包形式里面嵌套几个函数解决,一个函数一个作用域

2、java的超类是object,kotlin的超类是any

3、kotlin类是封闭的,需要被继承使用open关键字。java默认可以被继承。

4、kotlin的枚举类里面可以定义构造函数和普通函数

5、kotlin可变参数是vararg,java是..

6、out子类泛型对象可以赋值给父类泛型对象,java做不到

7、kotlin里面的Unit相当于java里面的void,无返回值类型

重点数据结构

map

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐