Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何比较Kotlin中的Short和Int?_Kotlin - Fatal编程技术网

如何比较Kotlin中的Short和Int?

如何比较Kotlin中的Short和Int?,kotlin,Kotlin,我有一个Short变量,需要检查其值。但编译器抱怨说,当我执行简单的等于检查时,运算符“==”不能应用于“Short”和“Int”: val myShort: Short = 4 if (myShort == 4) // <-- ERROR println("all is well") 下一个是int(不需要,现在我有两个int,而实际上我不需要任何int) 基本上,将其与小常量进行比较的“最干净”方法是myShort==4.toShort() 但是,如果要将

我有一个
Short
变量,需要检查其值。但编译器抱怨说,当我执行简单的等于检查时,
运算符“==”不能应用于“Short”和“Int”

val myShort: Short = 4
if (myShort == 4) // <-- ERROR
    println("all is well")
下一个是int(不需要,现在我有两个int,而实际上我不需要任何int)


基本上,将其与小常量进行比较的“最干净”方法是
myShort==4.toShort()

但是,如果要将
Short
与更宽的类型变量进行比较,请转换
myShort
以避免溢出:
myShort.toInt()==someInt

看起来很奇怪,调用一个基元数上的函数

val myShort: Short = 4
if (myShort == 4.toShort())
    println("all is well")
但它实际上并不调用函数,它们被内部化并编译成字节码,字节码以JVM自然的方式操作数字,例如,
myShort==4.toShort()的字节码是:

ILOAD 2      // loads myShort
ICONST_4     // pushes int constant 4
I2S          // converts the int to short 4
IF_ICMPNE L3 // compares the two shorts

另请参见:.

它实际上并没有调用.toShort()函数
,尽管如此,看到
4.toShort()
将有一些时间来适应……@gromit190,
4因为短
将不起作用,请参见我引用的Q&A解释:(删除我以前的评论)是的,你完全正确。谢谢
ILOAD 2      // loads myShort
ICONST_4     // pushes int constant 4
I2S          // converts the int to short 4
IF_ICMPNE L3 // compares the two shorts