Kotlin 对象声明与对象表达式
Kotlin 可以用 objects 来创建对象,分别是对象声明和对象表达式,语法相似语义不同。一句话记忆,对象声明是单例,对象表达式是匿名内部类。
Kotlin 可以用 objects 来创建对象,分别是对象声明和对象表达式,语法相似语义不同。一句话记忆,对象声明是单例,对象表达式是匿名内部类。
内联类(inline class)是 Kotlin 1.3 引入的实验特性,Kotlin 1.5 后改名为 值类(value class),并推荐使用 @JvmInline 注解。它的核心目标是:用包装类型提供类型安全,同时在多数场景下避免运行时装箱开销。
Kotlin 中的嵌套类和内部类默认行为正好和 Java 中相反。写在内部的类默认不持有外部类的引用,仅当加了 inner 关键字之后才持有外部类的引用。
Kotlin 的委托是一种将职责转交给其他对象的机制,分为属性委托和类委托,委托是 Kotlin 替代继承、实现组合复用的重要手段,也是面试高频考点。
当应用组件启动且该应用未运行任何其他组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件会在相同的进程和线程(称为“主”线程)中运行。如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。
Kotlin中有2种相等性,结构型相等和引用型相等。可以理解为结构型相等是值比较,和Java中的equals类似,引用型相等是通过比较引用指向的对象是否为同一个,和Java中的==类似。
使用ContraintLayout能够使用平铺的布局方式(没有层级嵌套)创建大而复杂的布局。和RelativeLayout类似,ConstraintLayout所有的View都在同一层级中,但是它比RelativeLayout使用起来更加灵活,结合Android Studio的布局编辑器,使用起来也更加简单。
流是Java 8中新引入的概念,它允许你以声明式方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。
Lambda表达式的作用和匿名内部类相似,也是为了将代码作为数据来传递,从某种意义上讲,Lambda表达式也可以理解为匿名函数,在其他的一些语言中则把称为闭包,实际上意义都差不多的。