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 线程安全-