安卓 Kotlin 面试题 21-30

🔥  21、 Kotlin 中的“open”和“public”有什么区别?🔥

open 关键字的意思是“为扩展而开放” 。

类上的 open 注释与 Java 的相反 final:它允许其他人从该类继承
如果您不指定任何可见性修饰符,则默认使用public,这意味着您的声明将在任何地方可见。

如果没有明确指定其他内容,则public是默认值。

🔥  22.、Kotin “const”和“val”有什么区别?🔥

consts 是编译时常量。这意味着它们的值必须在编译时分配,不像vals,它可以在运行时完成。
这意味着,const永远不能将 s 分配给函数或任何类构造函数,而只能分配给 aString或原语。
 

例如:
const val foo = complexFunctionCall() //Not okay
val fooVal = complexFunctionCall() //Okay
const val bar = "Hello world" //Also okay

 🔥  23、 Kotlin List 和 Array 类型有什么区别?🔥

使用方面的主要区别在于Arrays具有固定大小,而(Mutable)List可以动态调整其大小此外Array是可变的,而List不是

此外,还有kotlin.collections.List一个由 实现的接口java.util.ArrayList。kotlin.collections.MutableList当需要允许修改项目的集合时,它也被扩展为使用。

在 jvm 级别Array上由数组表示。List另一方面,java.util.List因为在 Java 中没有可用的不可变集合等价物,所以由表示。

🔥  24、 简述Kotlin 中的 Elvis 运算符?🔥 

Elvis 运算符是许多编程语言的一部分,例如 Kotlin 以及 Groovy 或 C#。Elvis 运算符是省略了第二个操作数的三元运算符。

x ?: y // yields `x` if `x` is not null, `y` otherwise.
如果x不为空,则返回。如果为 null,则将y返回 。

🔥 25、请用 Kotlin 重写这段代码 ?🔥 

你能用 Kotlin 重写这段 Java 代码吗?

public class Singleton {
    private static Singleton instance = null;
    private Singleton(){
    }
    private synchronized static void createInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
    }
    public static Singleton getInstance() {
        if (instance == null) createInstance();
    return instance;
    }
}
 object Singleton

🔥  26、如何建议在 Kotlin 中创建常量?🔥 

在 Kotlin 中,如果你想创建应该在类中使用的局部常量,那么你可以像下面这样创建它:

val MY_CONSTANT_1 = "Constants1"
// or
const val MY_CONSTANT_2 = "Constants2"
像,用关键字val定义的变量是不可变的。const这里的区别在于const 用于在编译时已知的变量。

还要避免使用伴随对象。在后台,为可访问的字段创建了 getter 和 setter 实例方法。
调用实例方法在技术上比调用静态方法更昂贵。而是在 中定义常量object:

object DbConstants {
    const val TABLE_USER_ATTRIBUTE_EMPID = "_id"
    const val TABLE_USER_ATTRIBUTE_DATA = "data"
}

🔥  27、Koltin 可以互换使用 IntArray 和 Kotlin 中的 Array 吗?🔥

Array是一个Integer[]在引擎盖下,IntArray而是一个int[]。

这意味着当您将 an 放入Int中时Array,它将始终被装箱(特别是,带有Integer.valueOf()调用)。在 的情况下IntArray,不会发生装箱,因为它会转换为 Java 原始数组。

所以我们不能互换使用它们。

🔥28、 阐述什么是 Kotlin double-bang (!!) 运算符?🔥

非空断言运算符 !! 将任何值转换为非 null 类型,KotlinNullPointerException如果值为 null,则引发异常。

考虑:

fun main(args: Array) {
    var email: String?
    email = null
    println(email!!)
}
此运算符应在开发人员保证的情况下使用 - 它允许您 100% 确定其值不为空。

🔥  29、 函数中Unit-return的目的是什么?为什么 VALUE 在那里?这个价值是多少?🔥

fun printHello(name : String?) : Unit {
    if (name != null)
        print("Hello, $name!")
    else
        print("Hi there!")
    // We don't need to write 'return Unit.VALUE' or 'return', although we could
}
 

目的与 C 或 Java 相同void。只有 Unit 是正确的类型,所以它可以作为泛型参数等传递。

为什么我们不称它为“Void”:因为“void”这个词的意思是“无”,还有另一种类型,Nothing即“根本没有价值”,即计算没有正常完成(永远循环或抛出一个例外)。我们无法承受意义的冲突。

为什么 Unit 有值(即与 Nothing 不同):因为通用代码可以顺利运行。如果您为通用参数 T 传递 Unit,则为任何 T 编写的代码都需要一个对象,并且必须有一个对象,即 Unit 的唯一值。

如何访问 Unit 的值:因为它是一个单例对象,所以说Unit

UNIT实际上包含有价值的信息,它基本上只是意味着“完成”。它只是将信息返回给调用者,即方法已完成。

 🔥  30、Koltin 如何使用“apply”重构这段代码?🔥

考虑:

class Message(message: String, signature: String) {
    val body = MessageBody()

    init {
        body.text = message + "\n" + signature
    }
}
您是否看到任何可以进行的重构?
重构后的结果

class Message(message: String, signature: String) {
    val body = MessageBody().apply {
        text = message + "\n" + signature
    }
}

相关推荐

  1. Kotlin 面试 21-30

    2024-03-11 07:46:03       23 阅读
  2. Kotlin 面试 31-40

    2024-03-11 07:46:03       27 阅读
  3. Kotlin面试 41-50

    2024-03-11 07:46:03       19 阅读
  4. kotlin面试 61-70

    2024-03-11 07:46:03       21 阅读
  5. kotlin面试 71-80

    2024-03-11 07:46:03       18 阅读
  6. kotlin面试 101-105

    2024-03-11 07:46:03       16 阅读
  7. kotlin面试 91-100

    2024-03-11 07:46:03       18 阅读
  8. kotlin面试 81-90

    2024-03-11 07:46:03       22 阅读
  9. Kotlin 面试

    2024-03-11 07:46:03       20 阅读
  10. UI面试 31-35

    2024-03-11 07:46:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 07:46:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 07:46:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 07:46:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 07:46:03       20 阅读

热门阅读

  1. Git-安装与使用(快速上手图文教程)

    2024-03-11 07:46:03       26 阅读
  2. SpringBoot中实现API速率限制的令牌桶算法项目

    2024-03-11 07:46:03       18 阅读
  3. 【py】加载sdk文件夹中的dll

    2024-03-11 07:46:03       18 阅读
  4. 【spring】-多模块构建

    2024-03-11 07:46:03       19 阅读
  5. 3488.最短路径floyd、并查集

    2024-03-11 07:46:03       19 阅读
  6. Lua 函数前的冒号和点号,你知道他们的区别吗?

    2024-03-11 07:46:03       20 阅读
  7. [2023年]-hadoop面试真题(一)

    2024-03-11 07:46:03       27 阅读
  8. C/C++关键字详解-----`const`的使用

    2024-03-11 07:46:03       22 阅读
  9. Spring Boot(六十六):集成Alibaba Druid 连接池

    2024-03-11 07:46:03       23 阅读