我有点困惑为什么当我尝试打印如下所示的任何基本类型的数组时,它返回一个地址而不是数组中的实际值。
fun notInPlaceRevers(array : IntArray): IntArray{
val arrayB = IntArray(5)
for (i in 0 until array.size)
array[i] = array[(array.size -1) - i]
return arrayB
}
fun main(args: Array<String>) {
val initialArray = intArrayOf(2,3,4,5,6)
print("${notInPlaceRevers(initialArray)}")
}
Run Code Online (Sandbox Code Playgroud)
它打印出这个 --> [I@3834d63f
现在我已经测试过了,当我执行 foreach 循环时,它会打印出每个索引中的值,例如
for(element in initialArray)
print("$element")
Run Code Online (Sandbox Code Playgroud)
这是否与 kotlin 与 java 类似,在将对象传递给函数时传递对象引用的副本有关。那么,当打印原始数组时,我会返回引用吗?
还有另一种更简单的方法来打印原始数组吗?
它打印出这个 --> [I@3834d63f
它与 Kotlin 无关。这就是 Java 的工作原理。
这是否与 kotlin 与 java 类似,在将对象传递给函数时传递对象引用的副本有关。那么,当打印原始数组时,我会返回引用吗?
我假设您没有运行 Kotlin 本机或 Kotlin JS。它被编译为Java字节码并在JVM上运行。所以它遵循Java的规则。
还有另一种更简单的方法来打印原始数组吗?参见Mon Vrai Nom 的回答
但是,我建议您List
改为使用。直接使用数组并没有什么真正的好处,就像ArrayList
在 Java 中使用数组一样。不仅你有固定的大小List
,你还有更多的扩展方法。
这是一个例子。
fun notInPlaceRevers(list : List<Int>): List<Int> {
return list.mapIndexed { i , _ -> list.size - 1 - i }
}
fun main(args: Array<String>) {
val initialList = listOf(2, 3, 4, 5, 6)
print("${notInPlaceRevers(initialList)}")
}
Run Code Online (Sandbox Code Playgroud)
它打印
[4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1538 次 |
最近记录: |