当前位置: 首页 > news >正文

平安河南建设网站贵阳网站建设价格

平安河南建设网站,贵阳网站建设价格,wordpress插件拖拽,wordpress有赞收款Android开发高频面试题之——kotlin篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Kotlin如何实现空安全的? Kotlin 将变量划分为可空和不可空,通过查看字节码可知,声明不可空的变量会…Android开发高频面试题之——kotlin篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Kotlin如何实现空安全的? Kotlin 将变量划分为可空和不可空,通过查看字节码可知,声明不可空的变量会加 @NonNull注解,会告诉编译器检查变量是否可空。声明可空的变量会加 @Nullable注解。Kotlin 提供了空安全操作符 ?相当于实现了非空判断,当对象不为空时才执行操作,否则不执行。保证了空安全//场景1,m1方法接收一个不可能为null的字符串 //在其方法体中我们获取了传入字符串的长度 fun m1(str: String) {str.length } //场景2,m2方法接收一个可能为null的字符串 //在其方法体中我们采用了安全调用操作符 ?. 来获取传入字符串的长度 fun m2(str: String?) {str?.length } //场景3,m3方法接收一个可能为null的字符串 //在其方法体中我们采用了 !! 来获取传入字符串的长度 fun m3(str: String?) {str!!.length }public final static m1(Ljava/lang/String;)V@Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0L0ALOAD 0LDC "str"INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)VL1LINENUMBER 6 L1ALOAD 0INVOKEVIRTUAL java/lang/String.length ()IPOPL2LINENUMBER 7 L2RETURNL3LOCALVARIABLE str Ljava/lang/String; L0 L3 0MAXSTACK = 2MAXLOCALS = 1// access flags 0x19public final static m2(Ljava/lang/String;)V@Lorg/jetbrains/annotations/Nullable;() // invisible, parameter 0L0LINENUMBER 10 L0ALOAD 0DUPIFNULL L1INVOKEVIRTUAL java/lang/String.length ()IPOPGOTO L2L1POPL2L3LINENUMBER 11 L3RETURNL4LOCALVARIABLE str Ljava/lang/String; L0 L4 0MAXSTACK = 2MAXLOCALS = 1public final static m3(Ljava/lang/String;)V@Lorg/jetbrains/annotations/Nullable;() // invisible, parameter 0L0LINENUMBER 15 L0ALOAD 0DUPIFNONNULL L1INVOKESTATIC kotlin/jvm/internal/Intrinsics.throwNpe ()VL1INVOKEVIRTUAL java/lang/String.length ()IPOPL2LINENUMBER 16 L2RETURNL3LOCALVARIABLE str Ljava/lang/String; L0 L3 0MAXSTACK = 3MAXLOCALS = 12. 谈谈你对协程的理解 协程可以看做是官方封装的轻量级线程框架。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。 协程与线程有什么区别: ·Kotlin协程,不是操作系统级别的概念,无需操作系统支持,线程是操作系统级别的概念,我们开发者通过编程语言(Thread,java)创建的线程,本质还是操作系统内核线程的映射。Kotlin协程,是用户态的(userleve),内核对协程无感知;一般情况下,我们说的线程,都是内核线程,线程之间的切换,调 度,都由操作系统负责。Kotlin协程,是协作式的,由开发者管理,不需要操作系统进行调度和切换,也没有抢占式的消耗,因比它更加高效;线程,是 抢占式的,它们之间能共享内存资源。Kotlin协程,它底层基于状态机实现,多协程之间共用一个实例,资源开销极小,因比它更加轻量;线程会消耗操作系统资源。Kotlin协程,本质还是运行于线程之上,它通过协程调度器,可以运行到不同的线程上 优点:轻量和高效:协程可以在一个线程中开启1000个协程,也不会有什么影响。简单好用:其实轻量和高效并不是协程的核心竞争力,最主要的还是简化异步并发任务,代码中可以已同步的方式替换异步,去除java中回调地狱问题。3. 了解密封类(Sealed Classes)吗 可以理解成是Enum枚举类的加强版 Sealed class(密封类) 是一个有特定数量子类的类,看上去和枚举有点类似,所不同的是,在枚举中,我们每个类型只有一个对象(实例);而在密封类中,同一个类可以拥有几个对象。Sealed class(密封类)的所有子类都必须与密封类在同一文件中Sealed class(密封类)的子类的子类可以定义在任何地方,并不需要和密封类定义在同一个文件中Sealed class(密封类)没有构造函数,不可以直接实例化,只能实例化内部的子类sealed class SealedClass{class SealedClass1():SealedClass()class SealedClass2():SealedClass()fun hello(){println("Hello World ... ")} } fun main(args:ArrayString){var sc:SealedClass = SealedClass()//这里直接编译报错 } fun main(args:ArrayString){var sc:SealedClass = SealedClass.SealedClass1()//只能通过密封类内部的子类实例化对象,这时就可以执行里面的方法了sc.hello() }使用场景:与when表达式搭配 // Result.kt sealed class Resultout T : Any {data class Successout T : Any(val data: T) : ResultT()data class Error(val exception: Exception) : ResultNothing() }when(result) {is Result.Success - { }is Result.Error - {
http://www.eeditor.cn/news/125313/

相关文章:

  • 长沙行业网站建设费用标准潍坊住房和城乡建设厅网站
  • c 可以用来做网站吗天津设计公司招聘
  • 建设营销网站石家庄建站公司
  • 培训行业门户网站建设下载导航到手机上安装
  • 网站验证码怎么做的5网站建设公司
  • 网站建设罗贤伟dw网页设计的一般步骤
  • 苏州网站建设公司鹅鹅鹅嘉兴专业网站建设
  • 公司怎么注册官方网站建立网站的主要流程有哪些步骤
  • 佛山网站排名推广个人博客网站制作代码
  • 网站为什么做子域名福田做棋牌网站建设哪家好
  • 湖南高端网站建设太原跨境电商
  • 网站优化要从哪些方面做wordpress添加简码
  • 国外主流网站开发技术怎么样建设一个网站
  • linux代码做网站工业设计产品效果图
  • 网站是如何盈利的重庆网络推广经理
  • 建设网站的技巧外贸seo教程
  • 中山市饮食网站建设辽宁大连直客部七部电话
  • 手机网站会员中心模板手机电脑网站建设
  • 个人网站主页建设教程百度快照怎么打开
  • 做直播的网站有哪些营销网站制作方案
  • 如何在网站中做内部链接可以做策略回测的网站
  • windows wordpress 轻量级网站优化方案
  • 新手做的网站龙岩优化怎么做搜索
  • 做网站切图尺寸公司网站建站软件
  • 电子商务网站建设子项目网站设计网站公司
  • 可以做微网站的第三方平台有哪些wordpress 去除 栏头
  • 在北京网站建设的岗位wordpress几种系统
  • 做网站包域名包服务器多少钱wordpress登陆界面背景
  • 国内免费网站服务器推荐莆田市秀屿区建设局网站
  • 做视频网站挣钱吗上海环球金融中心造价