如何在 Kotlin 中比较 Short 和 Int?

2023-11-26

我有一个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(使用前将#替换为@)

如何在 Kotlin 中比较 Short 和 Int? 的相关文章

随机推荐

  • 在 Google 表格上将 HTML 下拉菜单与 Google Apps 脚本结合使用

    我正在 Google Sheets 上运行一个函数 要求用户从 相当长的 选项列表中进行选择 由于 UI 服务已被弃用 我想尝试使用 HTML 但我对此一无所知 我需要弹出 HTML 用户界面 让用户从列表中选择一个名称 然后在将名称传递回
  • 使用 JavaScript 在 Power Query 中使用正则表达式

    我需要 Regexp 而 M Power Query 没有对其的本机支持 我发现了围绕同一个优秀的 Web Page 和 JavaScript 想法的几种解决方案变体 比克康坦 雨果贝里 由于 JavaScript 的限制 我不得不采用它们
  • Matplotlib 表格格式化列宽

    我希望格式化表的一列 但是当迭代行时 每次迭代后列宽度都会发生变化 源代码 def p create table self events dates rows columns portfolio param events Dict Date
  • 使 C 模块变量以只读方式访问

    我想为模块变量提供客户端模块的只读访问权限 几种解决方案 1 最常见的一种 module a c static int a int get a void return a module a h int get a void 这使得每个变量共
  • JMeter - 使用 POST 变量发送 HTTP 请求时遇到问题?

    我正在尝试加载测试一个从存档数据库中获取记录的 java servlet Servlet 的工作原理如下 1 从 HTTP 标头读取 post 变量 2 使用变量查询数据库 3 返回 XML 我设置了一个测试 我想用 post 变量触发 H
  • 如何使用 NextJS Links 处理电话号码?

    我有一个使用 Next Link 的 Link 组件 我传入的电话号码格式如下 tel 15555555555 但是我收到错误 Invalid href passed to router tel 15555555555 不支持电话号码吗 N
  • Swift 和 NSUserDefaults - 当用户默认为空时 EXC_BAD_INSTRUCTION

    我正在将我的一个项目逐个文件转换为 Swift 我对 NSUserDefaults 有一个奇怪的行为 我使用 NSString 而不是 String 来与其他代码兼容 var selectedMonth NSString get retur
  • 将 CGRect 标准化为 0 到 1 之间

    正常化的最佳方法是什么CGRect值使其介于 0 和 1 单位坐标系 之间 一个非常简洁的方法是 CGAffineTransform t CGAffineTransformMakeScale 1 0 parentRect size widt
  • Java 连接池

    我搜索了连接池并阅读了相关内容 如果我理解正确的话 连接池就像打开连接的集合 如果建立或创建了连接 则应将其添加到连接池中 如果该连接已关闭 则应将其从连接池中删除 当它打开时 我可以一次又一次地使用它 在阅读这些有关连接池的教程和解释时
  • PyQt4 和 PyQt5 中的 QFileDialog 字符串有区别吗?

    我有一段使用 Python3 和 PyQt5 打开 QFileDialog 的代码块 from PyQt5 QtWidgets import QApplication QWidget QPushButton QFileDialog impo
  • 如何使 JSP 标记文件不忽略所有空格?

    我真的被这个难住了 我想输出一个列表 并让标记文件处理逗号 单数与复数等 但是当我显示列表时 它完全忽略空格 所以一切都像这样一起运行 我尝试使用 HTML 实体 thinsp ensp 和 emsp 我不能使用 nbsp 这些必须被破坏
  • 如何打印我的单选按钮并在文本区域中输入类型文本?

    我有带有四个单选按钮和一个输入类型文本的调查问卷 按顺序打印 不删除前一张 var todos input type radio todos on click gt var newText Array from todos forEach
  • 如何从express重定向到react-router?

    我正在将身份验证添加到我的应用程序中 该应用程序使用react router 我已经在之后设计了客户端路由认证流程示例在react router中 但使用passport而不是示例使用的localstorage 这一切都很好 下一步是保护我
  • 如何在Inno Setup中设置安装文件夹的权限

    我正在使用 Inno Setup 创建应用程序的安装程序 第一次运行时 我的应用程序正在创建一个 SQLite 数据库 但当用户没有修改安装文件夹的权限时 它无法实现这一点 我设法设置文件的权限 Files Source D jar Des
  • 使用 Vuforia 和 Unity 仅创建一次具有地平面检测的对象

    我正在尝试使用 Unity 和 Vuforia 创建 AR 应用程序 我有一个 3D 模型 需要在检测到地平面时生成 但这只需要发生一次 Vuforia 的工作方式是 当检测到新飞机时 它会继续生成对象 所以我需要做的是要么只检测一次平面
  • 如何查询非数字字段上的“之间”数字数据?

    我刚刚在数据库中发现了一个查询失败 导致报告失败 查询的基本要点 Select From table Where IsNull myField lt gt And IsNumeric myField 1 And Convert int my
  • 使用过滤查询*:*时Solr默认是如何排序的?

    我们当前的页面设置未应用过滤器 方面 查询 它是所有内容的列表 使用寻呼机 过滤器查询类似于 任何领域的任何内容 我无法弄清楚内容是如何排序的 它说这是 相关性 但是当您选择所有内容时 这意味着什么 我做了一些快速测试 它似乎没有按内容修改
  • 如何在批处理文件中将变量与字符串或变量连接

    我想将变量与字符串连接起来 在第 7 行到第 11 行中 我尝试连接 somevariable 使用字符串或使用 P 变量 但这似乎不起作用 IE 当前文件夹中有文件 0 1 en pdf 该脚本将文件名快捷方式设置为第一位数字 之后我想用
  • html 表格行的行计数器

    我在 JSF Web 应用程序中有 HTML 表 我正在使用动态生成行
  • 如何在 Kotlin 中比较 Short 和 Int?

    我有一个Short我需要检查其值的变量 但编译器抱怨说Operator cannot be applied to Short and Int 当我进行简单的等于检查时 val myShort Short 4 if myShort 4 lt