安卓 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 = nullprintln(email!!)
}
此运算符应在开发人员保证的情况下使用 - 它允许您 100% 确定其值不为空。

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

fun printHello(name : String?) : Unit {if (name != null)print("Hello, $name!")elseprint("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}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 范例阅读 :插件功能 plugabdpaint

一、源码目录: Qt\Examples\Qt-5.12.4\widgets\tools\plugandpaint 二、定义接口 class FilterInterface { public:virtual ~FilterInterface() {}virtual QStringList filters() const 0;virtual QImage filterImage(const QString &filter, const QImage &…

vscode 使用ssh进行远程开发 (remote-ssh),首次连接及后续使用,详细介绍

在vscode添加remote ssh插件 首次连接 选择左侧栏的扩展,并搜索remote ssh 它大概长这样,点击安装 安装成功后,在左侧栏会出现远程连接的图标,点击后选择ssh旁加号便可以进行连接。 安装成功后vscode左下角会有一个图标 点击图…

Java核心技术卷1每日笔记——变量与常量

3.4 变量与常量 与所有程序设计语言一样,Java也使用变量来存储值。常量就是值不变的量。 3.4.1 声明变量 在Java中,每个变量都有一个类型(type)。 变量名必须是一个以字母开头并由字母或数字构成的序列。 字母包括’A’‘Z’、…

网页在特殊日子一键变灰

<template> <div :class"{ grayscale: isGrayscale }"> <!-- 你的页面内容放在这里 --> </div> </template> <script> export default { data() { return { // 存储哀悼日的数组 aidaoriDates:["0404", &q…

docker学习入门

1、docker简介 docker官网&#xff1a; www.docker.com dockerhub官网&#xff1a; hub.docker.com docker文档官网&#xff1a;docs.docker.com Docker是基于Go语言实现的云开源项目。 Docker的主要目标是&#xff1a;Build, Ship and Run Any App, Anywhere(构建&…

1.2_2 OSI参考模型

文章目录 1.2_2 OSI参考模型一、概述&#xff08;一&#xff09;ISO/OSI参考模型是怎么来的&#xff1f;&#xff08;二&#xff09;ISO/OSI参考模型&#xff08;三&#xff09;ISO/OSI参考模型解释通信过程 二、各层功能及协议&#xff08;一&#xff09;应用层&#xff08;第…

oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架

关于oss-fuzz-gen oss-fuzz-gen是一款基于LLM的模糊测试对象生成与评估框架&#xff0c;该工具可以帮助广大研究人员使用多种大语言模型&#xff08;LLM&#xff09;生成真实场景中的C/C项目以执行模糊测试。 该工具基于Google的OSS-Fuzz平台实现其功能&#xff0c;并对生成的…

蓝桥OJ 2942数字王国之军训排队 DFS剪枝

蓝桥OJ 2942数字王国之军训排队 #include<bits/stdc.h> using namespace std;const int N 15;//最多10队 int a[N], n; vector<int>v[N];//二维数组 v[i]记录队伍i中所有人的编号bool dfs(int cnt, int dep) {if (dep n1){//判断合法性for (int i 1; i < n; …

matlab常用语法

最近接触matlab程序&#xff0c;这里记录一下matlab常用语法。 1、find函数&#xff1a;查找矩阵X中的非零元素&#xff0c;返回这些元素的下标。 A[1,0;2,3]; find(A)ans 124 find(A2)&#xff1a;查找A中等于2的元素&#xff0c;并返回下标。 A[1,0,2,3,2,7]; find(A2)an…

Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!

内容概要 BeanDefinitionRegistry接口提供了灵活且强大的Bean定义管理能力&#xff0c;通过该接口&#xff0c;开发者可以动态地注册、检索和移除Bean定义&#xff0c;使得Spring容器在应对复杂应用场景时更加游刃有余&#xff0c;增强了Spring容器的可扩展性和动态性&#xf…

【C++那些事儿】函数重载与C++中的“指针“——引用

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我之前看过一套书叫做《明朝那些事儿》&#xff0c;把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言&#xff0c;无疑是抽象且难度颇…

为什么RTX 4090更受欢迎

RTX 4090作为顶级显卡&#xff0c;凭借高性能和高图形处理能力&#xff0c;特别适合游戏、专业图形设计和人工智能领域&#xff0c;备受专业游戏玩家和高性能计算需求开发者的青睐。 RTX 4090高速复杂的计算能力 RTX 4090 GPU拥有 760 亿个晶体管、16384 个 CUDA 核心和 24 GB…

FPGA Verilog编写状态机学习

1 二段式状态机 1.1 简介&#xff1a; 二段式状态机&#xff08;Two-phase state machine&#xff09;是一种常见的状态机实现方式&#xff0c;它将状态机的执行过程分为两个阶段&#xff1a;第一段是组合逻辑&#xff0c;用于确定下一个状态&#xff1b;第二段是时序逻辑&am…

nestjs10.x使用jwt生成token

1 安装依赖&#xff1a; pnpm install --save nestjs/jwtpnpm install passport passport-jwt nestjs/jwtpnpm install types/passport-jwt --save-dev 2 可以使用命令新建auth鉴权文件夹 nest g mo auth // auth.module.ts nest g s auth // auth.service.ts nest g co …

杠杆和保证金有什么关系?WeTrade众汇一个公式讲清楚

在交易中杠杆其实就是一种期权&#xff0c;它能增加交易者作为抵押品的资金&#xff0c;以建立和维持头寸。 例如&#xff0c;1:100的操作杠杆&#xff0c;在这种情况下&#xff0c;意味着开立1000单位基础货币的头寸&#xff0c;交易者将需要少100倍的资金&#xff0c;即10个…

Node.js基础---JSONP 接口

1. 概念及特点 概念&#xff1a;浏览器通过 <script> 标签的 src 属性&#xff0c;请求服务器上的数据&#xff0c;同时服务器返回一个函数的调用。这种请求数据的方式叫做 JSONP 特点&#xff1a; ① JSONP 不属于真正的 Ajax 请求&#xff0c;因为它没有使用 XMLHtt…

Linux 进程的 status 注解。

我们知道 Linux 一切都是面向文件的&#xff0c;所以我们可以通过文件来获取到正在运行的ELF程序的状态信息。 本文会注解进程状态里面的各项输出参数的作用&#xff0c;以便于人们在写SH脚本程序的时候可以作为一个参照信息表。 当我们知道了进程ID时可以用这个命令来查看进…

C++常量和变量

甲流疫情死亡率 甲流并不可怕&#xff0c;在中国&#xff0c;它的死亡率并不是很高。根据截至2009年12月22日各省报告的甲流确诊数和死亡数&#xff0c;计算甲流在各省的死亡率 输入 一行&#xff0c;有两个整数&#xff0c;第1个为确诊数&#xff0c;第2个为死亡数 输出 一…

学习Java的第四天

目录 一、if选择结构 1、基本if选择结构 语法结构&#xff1a; 流程图&#xff1a; 示例&#xff1a; 2、if-else 选择结构 语法结构&#xff1a; 流程图&#xff1a; 示例&#xff1a; 3、多重if选择结构 语法结构&#xff1a; 流程图&#xff1a; 示例&#xff1a…

探秘分布式神器RMI:原理、应用与前景分析(二)

本系列文章简介&#xff1a; 本系列文章将深入探究RMI远程调用的原理、应用及未来的发展趋势。首先&#xff0c;我们会详细介绍RMI的工作原理和基本流程&#xff0c;解析其在分布式系统中的核心技术。随后&#xff0c;我们将探讨RMI在各个领域的应用&#xff0c;包括分布式计算…