kotlin语法

语法基础

kotling语言和JVM虚拟机-

-声明变量和内置数据类型-

只读变量-

-类型推断-

编译时常量

-kotlin反编译后字节码-

kotlin生成字节码文件之后,交给jvm运行,和java一样-

工具步骤:tools -> kotlin -> show totlin bytecode-

引用类型-

-range表达式-

-when表达式-

-String模版-

-函数头-

-函数参数的默认参数-

具名函数参数:调用方法不用按特定的顺序-

-Unit函数特点-

-Noting类型特点-

-反引号函数名特点

` ` 这个可以写含有中文和数字的的方法;调用java方法,但是在kotlin中方法名字是关键字,可以把方法名用这个` `包起来就可以调用了-

-匿名函数-

-函数类型&隐式返回 :先声明函数,然后实现该函数-

-函数参数-

-it关键字特点:函数中参数只有一个时,it相当于所传参数-

-匿名函数的类型推断:其实就是var method = 方法的实现-

-

lambda-

-在函数中定义参数是函数:kt中可用于函数回调,但是在java中回调需要定一个的interface

kotlin的写法如下:-

java的写法如下:-

-函数内联:inline,有函数参数是lambda为参数-

-函数引用 ::-

-函数类型作为返回类型-

-匿名函数和具名函数-

Java的写法:-

-可空性特点-

-安全调用操作符: ?. 为null的时候,调用代码不执行,后面是代码是可执行的-

-let的安全调用-

-非空断言操作符特点-

-对比使用if判断null值情况-

-空合并操作符-

-语法中异常处理与自定义异常特点-

-先决条件函数

判断null,抛出异常:checkNotNull requireNotNull-
判断false,抛出异常:require-

-subString:截取字符串-

-split:分割-

-replace完成加密解码-

-==与===比较操作 字符串常量池

name1和name2是用一个引用,因为:字符串常量池,创建了第一个字符串,创建第二个同样的值时,不会新建,所以name1和name2是同一个引用。-

上面图中的输出值为false

-字符串遍历-

-数字类型的安全转换函数-

-Double转Int与类型格式化

toInt()是取下取整数,去除小数点后面的;图中有错误-

-内置函数-

-apply内置函数:始终返回本身-

-let内置函数-

-run内置函数-

-with内置函数-

-also内置函数-

-takeIf内置函数

takeIf(boolean) 如果boolean为true,则返回this本身,否则null-

-takeUnless内置函数-

-集合

-List创建于元素获取-

-可变List集合:MutableList-

-mutator函数-

-集合遍历-

-解构语法过滤元素-

-Set创建于元素获取-

-可变Set:MutablseSet-

-集合转换与快捷函数-

-数组类型-

-Map的创建-

-读取Map的值-

-Map遍历-

-可变Map-

-class类-

-主构造函数-

-次构造函数-

-初始化块:主构造函数的方法体-

构造初始化顺序 :(生成的字节码文件顺序:类成员先声明(可以直接赋值) -> 执行init{}里面的内容 -> 写在init{}后天面的类成员有赋值的再赋值; )-

-延迟初始化lateinit-

-惰性初始化by lazy

普通方式-

by lazy :懒汉式-

-初始化陷阱-

-继承与重载的open关键字

kt类class默认public final 修饰,所以不能被继承-
kt中函数默认public final 修饰,所以不能被重写-

-类型转换-

-智能类型转换-

-Any超类 == java Object-

-对象声明:object 单例-

-对象表达式-

-伴生对象:companion object == Java内部静态类 kt中没有static静态-

-内部类与嵌套类-

-数据类-

-copy函数-

-解构声明-

-运算符重载-

-枚举类-

-枚举类定义函数

-代数数据类型-

-密封类-

-数据类使用条件-

-接口定义-

-接口的默认实现-

-抽象类-

-范型

-范型类定义-

-范型函数-

-范型变换-

-范型类型约束-

-vararg关键字-

-out-协变 in-逆变

-reified关键字

-扩展函数

-定义扩展函数-

-范型扩展函数-

-扩展属性-

-可空类型扩展函数-

-infix关键字 中缀函数-

-扩展文件 iterable 扩展函数组成的文件,调用的时候import引用-

-重命名扩展:把引用的扩展函数重新命名,简化函数名-

-DSL:领域专用语言-

-变换函数map

变换函数flatmap

-过滤函数filter

-合并函数-

-函数式编程

-Java与kt调用 可空性-

-单例模式

饿汉式-

kt : object ClassName-
懒汉式-

懒汉式加锁 :防止多线程 synchronized-

懒汉式 volatile 线程安全-

-注解

-@JvmName :编译时修改类的名字,方便Java的调用-

-@JvmFeild:val类成员上面,可以去除类成员get方法,改成public修饰-

-@JvmOverLoads 把多参数的函数方法重载,Java调用时就可以不用管kt函数的默认参数-

-@JvmStatic 把一个在伴生匿名对象里的函数变成一个静态函数,方便java调用-

-手写rxJava-

posted @ 2023-04-21 11:17  cps666  阅读(60)  评论(0编辑  收藏  举报