我要给自己直到凌晨12点才能学习并在kotlin上获得成功(希望如此).
继https://kotlinlang.org/docs/kotlin-docs.pdf我试过17页上的这些片段可能有人请帮助我理解了为什么===会返回true一个值之间-128来127?
以下确实打印false:
val a: Int = 10000
val boxedA: Int? = a // Integer@445
val anotherBoxedA: Int? = a // Integer@447 why?
print(boxedA === anotherBoxedA) // false
Run Code Online (Sandbox Code Playgroud)
但是改变a的任何值之间-128,以127始终打印true:
val a: Int = -128
val boxedA: Int? = a // Integer@445
val anotherBoxedA: Int? = a // Integer@445 why?
print(boxedA === anotherBoxedA) // true!
Run Code Online (Sandbox Code Playgroud)
在我看来,如果Int值的范围之外-128,以127(Java字节)科特林创建上分配一个新的对象也使得参考不相等.
请参阅Integer.valueOf()适用于装箱int值的Java源代码.javadoc说:
此方法将始终缓存-128到127范围内的值
因此,如果具有相同的数值,则该范围内的盒装整数始终是相同的对象.
在Kotlin中,你应该比较盒装的整数==与否===.
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |