gpt4 book ai didi

Int 上的 Kotlin 引用相等行为,值在 -128 到 127 之间

转载 作者:行者123 更新时间:2023-12-01 09:19:44 25 4
gpt4 key购买 nike

我要在凌晨 12:00 之前学习并在 kotlin 上取得成效(希望如此)。

关注 https://kotlinlang.org/docs/kotlin-docs.pdf我在第 17 页尝试了这些片段。如果值介于 -128127

以下确实打印出 false:

val a: Int = 10000
val boxedA: Int? = a // Integer@445
val anotherBoxedA: Int? = a // Integer@447 why?
print(boxedA === anotherBoxedA) // false

但是,将 a 更改为 -128127 之间的任何值总是会打印 true:

val a: Int = -128
val boxedA: Int? = a // Integer@445
val anotherBoxedA: Int? = a // Integer@445 why?
print(boxedA === anotherBoxedA) // true!

在我看来,如果 Int 值超出 -128127 (Java 字节)的范围,kotlin 会在赋值确实使引用不相等。

最佳答案

查看 Integer.valueOf() 的 Java 源代码,它负责装箱 int 值。 javadoc 说:

This method will always cache values in the range -128 to 127

因此,如果该范围内的装箱整数具有相同的数值,则它们始终是相同的对象。

在 Kotlin 中,您应该将盒装整数与 == 进行比较,而不是与 === 进行比较。

关于Int 上的 Kotlin 引用相等行为,值在 -128 到 127 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com