- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我不确定 Kotlin 中 IntArray
和 Array<Int>
之间的区别是什么,以及为什么我不能互换使用它们:
我知道 IntArray
在定位 int[]
时会转换为 JVM
,但是 Array<Int>
会转换成什么?
此外,您还可以使用 String[]
或 YourObject[]
。为什么 Kotlin 有 {primitive}Array
类型的类,而几乎任何东西都可以排列成一个数组,而不仅仅是基元。
最佳答案
Array<Int>
是 Integer[]
在引擎盖下,而 IntArray
是 int[]
.就是这样。
这意味着当您输入 Int
在 Array<Int>
,它将始终被装箱(具体来说,使用 Integer.valueOf()
调用)。在 IntArray
的情况下,不会发生装箱,因为它会转换为 Java 原始数组。
除了上述可能的性能影响之外,还需要考虑便利性。原始数组可以保持未初始化,它们将具有默认 0
所有指标的值。这就是为什么IntArray
其余的原始数组都有只接受大小参数的构造函数:
val arr = IntArray(10)
println(arr.joinToString()) // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
相比之下,Array<T>
没有只接受大小参数的构造函数:它需要有效的、非空的 T
创建后所有索引处的实例都处于有效状态。对于Number
类型,这可能是默认的 0
,但无法创建任意类型的默认实例 T
.
所以在创建 Array<Int>
时,您也可以使用带有初始化函数的构造函数:
val arr = Array<Int>(10) { index -> 0 } // full, verbose syntax
val arr = Array(10) { 0 } // concise version
或者创建一个 Array<Int?>
以避免必须初始化每个值,但随后您将被迫处理可能的 null
每次从数组中读取的值。
val arr = arrayOfNulls<Int>(10)
关于kotlin - Kotlin 中的 IntArray 与 Array<Int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45090808/
我有点困惑,为什么当我尝试打印出如下所示的任何原始类型的数组时,它会返回一个地址而不是数组中的实际值。 fun notInPlaceRevers(array : IntArray): IntArray
我的表包含大约 300 000 行,列类型为 INT[] 每个数组包含大约 2000 个元素 我为这个数组列创建了索引 使用 GIN(column_name)在 table_name 上创建索引 in
我正在尝试使用 for 循环对整数数组的内容求和。从逻辑上讲我被困住了。这是我的代码: var someArray = [1,2,3,4,5]; function sum () { for(i=
由于某种原因,我的 intArray 由于访问冲突错误而在多个阶段不断崩溃,有人能发现问题吗? int main() { int height = 10, width = 10; //Size
我有一个 Postgres(版本 9.5.4)表 geo,其中包含具有以下结构的 738,884 条国家/地区地理数据记录: Table "public.geo" C
我可以创建一个索引来加速数组操作。 create table test_array as select id, array[id, id+1, id+2]::text[] as codes f
我正在尝试初始化 IntArray在 Kotlin 中像这样: intArrayOf(1..9) 但我得到了一个 TypeError那个Int是必需的,但我提供了 IntRange .有没有办法用一个
打印 IntArray 内容的 Kotlin 方式是什么? class Solution { fun plusOne(digits: IntArray): IntArray {
我正在寻找一种最好的方法来迭代 IntArray 索引类似于下面的 JAVA 代码 for (int i = 0; i = A[i+1]) decreasing = true }
我改变这个int[] int[] imageID; = { R.drawable.farm_small, R.drawable.scroll_s
我正在尝试使用以下方法将 10,000 x 10,000 int 数组转换为 double 数组(我在这个网站上找到) public double[,] intarraytodoublearray(
我想不出在 Kotlin 中向数组添加值的方法。 我想从用户那里获取值并将它们添加到数组中。 val arr = arrayOf() 或 var arr = intArrayOf() 在 Java 中
我想编写这个程序,并将其放在一个名为 intarray.c 的文件中: #include #include #include "intarray.h" struct IntArray {
这个问题在这里已经有了答案: Difference between List and Array types in Kotlin (3 个答案) IntArray vs Array in Kotli
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicates: C++: sizeof for array length Sizeof array passed as p
我不确定 Kotlin 中 IntArray 和 Array 之间的区别是什么,以及为什么我不能互换使用它们: 我知道 IntArray 在定位 int[] 时会转换为 JVM ,但是 Array 会
如何对 intArrayOf 的 buff 进行 base64 编码使用 Kotlin 。 val vec = intArrayOf(1,2,3,4,5) val data =?! val base6
这是我运行的日志。关闭 intarray 后,它会在 56 毫秒内运行。然后我启用 intarray,并运行相同的查询,但速度要慢得多。 启用扩展后我是否需要重新索引表或类似的东西? test_int
显然这些是一个类,对吧?但是我在它们上面找不到任何 javadoc api。我可以找到一个 Arrays 类,它提供了处理这些类型数组的方法,但不是这些数组的实际类。我一直对此感到困惑。 最佳答案 它
我的应用程序正在使用 PostgreSQL 的 intarray 扩展。 不幸的是,根据docs,它似乎不可用。和命令行: > echo 'show extwlist.extensions' | he
我是一名优秀的程序员,十分优秀!