我有一个Short
我需要检查其值的变量。但编译器抱怨说Operator '==' cannot be applied to 'Short' and 'Int'
当我进行简单的等于检查时:
val myShort: Short = 4
if (myShort == 4) // <-- ERROR
println("all is well")
那么进行等于检查的最简单、“最干净”的方法是什么?
这是我尝试过的一些事情。
第一个将 4 整数转换为短整型(看起来很奇怪,对原始数字调用函数)
val myShort: Short = 4
if (myShort == 4.toShort())
println("all is well")
下一个将short转换为int(应该没有必要,现在我有两个int,而我实际上不需要任何int)
val myShort: Short = 4
if (myShort.toInt() == 4)
println("all is well")
基本上,将其与小常数进行比较的“最干净”方法是myShort == 4.toShort()
.
但如果你想比较Short
使用更宽类型的变量,转换myShort
而是为了避免溢出:myShort.toInt() == someInt
.
看起来很奇怪,对原始数字调用函数
但它实际上并不调用这些函数,它们被内在化并编译为字节码,该字节码以 JVM 自然的方式操作数字,例如,myShort == 4.toShort()
is:
ILOAD 2 // loads myShort
ICONST_4 // pushes int constant 4
I2S // converts the int to short 4
IF_ICMPNE L3 // compares the two shorts
也可以看看:另一个关于数字转换的问答.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)