kotlin
·
代码
飞飞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
更多推荐


所有评论(0)