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-



浙公网安备 33010602011771号