1.要素
在Java中类作为第一要素,而Kotlin中函数作为第一要素
2.区别: 简化代码
( 1 ) 不需要使用分号结尾
( 2 ) 类型自动推断:当我去创建一个变量时,在我不手动赋予类型,系统也会智能推断出类型,比如我定义一个var a=1,看起来它没有类型,但实际上他被定义为了int类型,体现在我去a+1时得到的结果是int类型
( 3 ) 数据类:Kotlin可以创建只包含数据的类,叫做数据类,体现在他是被data修饰的类,编译器 会自动从主构造函数中根据所有的声明属性提取函数(如:toString,set,get)
( 4 ) 避免null指针异常:默认声明的变量不能为空,如果要使变量为空需要添加?操作符
( 5 ) 构造函数:分为主构与次构函数,每一个类默认带一个无参主构函数,特点是没有函数体,在Kotlin中继承使用: 而Java中则使用关键字Exdense
( 6 ) 成员变量默认的set/get方法
( 7 ) kotlin可以函数里定义函数,java方法里不可以定义方法
( 8 ) 协程:最重要的是他可以通过看起来同步的方式写出异步的代码,这也是Toklin最有名的非阻 塞式挂起,可以把运行在不同线程的代码写到同一代码块中
怎么用:lauch()函数:lauch()函数的意义上我要创建一个协程并且在指定的线程上运行它,可以指定线程来执行代码,并且在执行之后吧线程再次切换回来
withContext函数:可以有效的解决嵌套问题,那么由于消除嵌套,我们可以把withContext函数放在函数里面包着里面的代码,这时会发生报错,错误信息提示为withContext是个suspend函数,需要写到协程中使用
suspend修饰符:withcontext就是被suspend修饰的函数,他需要在协程里被调用或者在另一个suspand函数中被调用(挂起函数)给自己的函数加suspend修饰符,报错消失了,被挂起后的代码被从原来的线程中抽离出来,理解为原来的线程不再执行被挂起的函数,这里suspend是暂停的意思,但是在这里,被挂起的函数并不会暂停而是被分离出去,在另外的线程中去执行任务了,当被切换另外的线程任务被执行完,协程会再次切回到主线程
挂起:所谓挂起就是一个稍后会被切回来的线程切换,为什么挂起只能在协程中或其他挂起函 数中执行。 因为被挂起后,线程任务执行完还需要切回来,切回来在Kotlin中叫做rumue(恢复), 而恢 复功能是属于协程的,所以他不能在其他地方使用