当前位置: 首页 > 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.hkea.cn/news/14261561/

相关文章:

  • 做pc端网站新闻新网站建设的工作
  • 重庆市建筑网站建设国土网站建设自查报告
  • 网站开发基本构成自治区住房和城乡建设厅官网
  • 上海高端网站建筑模板多少钱一块
  • 郑州 互联网 公司网站西安短视频制作公司
  • 上海专业网站建站公司wordpress lovephoto
  • 逻辑网络设计的目标是什么?网站seo外包价格
  • 网站是由多个网页组成的吗网站建设业务平均工资
  • 网站服务器有哪些公司取名大全最新版的
  • 专业素材网站手机网页打不开被拦截了怎么办
  • 选片 网站 建设做店铺装修的公司网站
  • 泉州专业网站建设公司哪家好python 快速搭建网站
  • 做网站的行情网站网站建设公司上海
  • 在58做网站推广有效果吗如何开展网站推广
  • 手工做火枪的网站深圳涂料网站建设
  • 制作网站单页十堰秦楚网十堰晚报新闻
  • 科技网站制作免费推广网站入口2023燕
  • 算命公司网站建设制作开发方案网站建设的商业计划书
  • 嘉兴门户网站如何开发一个app软件
  • 重庆建网站价格表建设个人网站的好处
  • 网站设计开发的销售主要工作创新的中小型网站建设
  • 网站建设的成本有哪些方面怎么在网络上做推广
  • 建网站选号域名1800做网站因为专业
  • 山东省住房建设部网站大同哪有做网站的
  • 佛山外贸网站建设新闻大连建设工程规划公示牌
  • 网站优化怎么弄自己架设网站备案
  • 网站是每年都要付费吗美容美发网站模板
  • 郑州专业做淘宝直播网站装宽带需要多少钱
  • 个人门户网站模板南宁网站建设贴吧
  • 成都模板网站建设小米手机官方网站