kotlin学习笔记

 基础

        tips:

        1.浮点型类型kotlin会自动推测为double的的类型,如果在数据后面添加"f"或"F",那么会被定义为float类型;

        2.关于float类型,编译器默认保存小数点后6位(float类型转十进制是6位)的精确度,超出的部分会被丢弃掉,从而会精度损失;(数据精度丢失标准:四舍五入)

        3.kotlin中,数组类型不属于集合;

        4.数组遍历时不同于java的一种遍历方式

for((index,item) in arrayarg.withIndex()){
    println("$index-$item")
    //打印结果 index->item :(当前下标->数组中当前下标的取值)
}

        5.in和out的关键字使用

out关键字:
    含义:表示泛型类型的上限
    使用:可以在使用出直接添加,也可以在定义出添加(两者选其一即可)
    功能:那么被允许传入的参数就是该类型本身和该类型的子类型
in关键字:
    含义:表示泛型类型的下限
    使用:可以在使用出直接添加,也可以在定义出添加(两者选其一即可)
    功能:那么被允许传入的参数就是该类型自身和该类型的父类型 

        6.扩展函数

fun main(){
    //正常的调用
    Jump().test()
    //扩展函数的调用
    Jump().doublleJump()
}

--------------------以上是Kotlin的调用----------------------------------

class Jump{
    fun test(){
        println("test")
    }
}

//对于Jump类扩展的方法
fun Jump.doubleJump():String{
    return "doubleJump"
}

----------------------以下是在JAVA类中的调用-----------------------
KTExtentionsKT.doubleJump(new Jump())

协程

协程是什么?协程不属于标准库,所以在调用时,需要引入包

协程:由kotlin官方提供的线程Api

协程的好处?非阻塞式挂起

协程可以自动切换线程  ,避免了回调地狱,消除了回调

两个接口请求,然后等待两个结果获取成功之后,然后将两个结果合并执行下一步
协程的处理方案:
1.执行第一个接口请求
2.执行第二个接口请求
3.合并两次的接口请求结果,用方法合并 suspendingMerge("第一个接口的请求结果","第二个接口的请求结果"),返回接口为两次请求结果的合并

        suspend:指该协程所在的线程从该行代码开始不再运行该协程了,运行结束了,待挂起的函数执行完成后,会在指定的线程中(Dispatcher.IO等)继续执行接下来的协程内容,待执行完成后,会将线程切回到原来的线程,当然也可以通过代码设置不再切回去

        resume:协程切回来的动作

        挂起函数必须直接或间接在协程里被调用(直接或间接的调用一个自带的挂起函数),否则没有设置挂起函数的意义

        语法上来讲,suspend自身不具备任何切换协程的含义,它仅仅是一个表示,是创建者为了警告调用者,该段需要执行的代码应该在协程里被调用,是个耗时操作

关于协程的使用:

        使用范围:对于耗时操作,类似于java代码中的耗时操作,如,网络请求等,需要通过协程实现,否则,可能会导致主线程卡顿

        实现代码,首先,需要给代码添加suspend的关键字,并且调用该函数的函数也应该是挂起函数,也就是说,挂起函数只可以被挂起函数调用,从而与上述挂起函数必须直接或间接的调用一个挂起函数相呼应,其次,需要用自带的一些挂起函数对代码内容进行包裹,比如:withContext、delay等

关于协程的非阻塞式挂起:

        协程可以用同步的方式写出异步执行的代码,

        协程涉及到的挂起,有点类似于计算机操作系统中的作业挂起,,当某作业被挂起时,其他正在执行的作业依旧会被执行,区别在于,操作系统中的挂起,属于需要被唤醒的操作,而协程自身的挂起,会在自己执行完成之后,自己再切回原来调用的线程中继续执行,具体的内容需要后续查看系统源码分析

以上,是通过一些学习视频编辑的一些自己关于协程的理解,也不清楚对不对,哈哈哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值