Kotlin 运算符'的不同结果===';以不同的值';名称';介于两个值之间
当我将我的代码与另一个用户的代码进行比较时,会产生不同的结果。 () 我用的是intellijKotlin 运算符'的不同结果===';以不同的值';名称';介于两个值之间,kotlin,syntax,Kotlin,Syntax,当我将我的代码与另一个用户的代码进行比较时,会产生不同的结果。 () 我用的是intellij //This is my code val a: Int = 1 val b: Int? = a val c: Int? = a println(b===c) //true //This is another user's one val a: Int = 10000 val boxedA: Int? = a val anotherBoxedA: Int? = a print(boxedA ===
//This is my code
val a: Int = 1
val b: Int? = a
val c: Int? = a
println(b===c) //true
//This is another user's one
val a: Int = 10000
val boxedA: Int? = a
val anotherBoxedA: Int? = a
print(boxedA === anotherBoxedA) //false
我不明白为什么会发生这种情况。假设您在JVM上运行代码,会发生以下情况:
Int?
转换为java.lang.Integer
,Int
转换为原语Int
类型
val-boxedA:Int?=a
变成val-boxedA:Integer=Integer.valueOf(a)
。(Integer.valueOf
是int
s的装箱方式)
Integer.valueOf的文档:
此方法将始终缓存-128到127(含)范围内的值,并且可能缓存此范围之外的其他值
Integer.valueOf(1)
的多次调用返回相同的Integer
;10000不会(默认情况下)
但实际上,
==
很少有用。哇,我从来没有想过这个数字!谢谢你的详细解释