Java中的双重比较技巧

2024-01-07

C++ 允许您将两个整数比较合并为一个以进行范围检查,例如

(unsigned)X < (unsigned)Upper

0 <= X < Upper

Java 语言没有无符号类型。您是否找到了一种方法来获得相同的效果,使用单个比较并且没有太多的开销?

Update:

根据 @Bathsheba 的评论, char 类型是无符号 16 位,并且适合我的目的,因为我的整数实际上在 Shorts 范围内。

这个问题仍然悬而未决ints.

可能有以下内容(X | (Upper - 1 - X)) >= 0,允许 30 位的范围。


如果您希望 Java 中的数据类型能够保存无符号 32 位 int 可以保存的值范围,那么您需要long。您可以使用 32 个一位进行位掩码,将可能为负的有符号 int 转换为肯定为正的long value.

(x & 0xffffffffL) < upper

//             ^
//             Implicit conversion to long (of both arguments)

当然,64 位“与”和 64 位比较将花费一些额外的时间,但可能少于管道中断时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的双重比较技巧 的相关文章

  • 在远程 Tomcat 上自动部署 Java 应用程序

    我希望能够自动将 Java 应用程序部署到 tomcat 服务器 现在的情况 正在 Eclipse 中开发 Java 项目 Tomcat 服务器在另一台机器上运行 提供该项目的 WAR 文件 我的目标 可以轻松编译项目并将其部署到远程 To
  • JMS队列消息接收顺序

    我按顺序在同一目标中添加两条 JMS 消息 这两条消息的接收顺序是否与我添加它们的顺序相同 或者是否有可能进行相反的排序 即首先检索目的地中首先接收到的消息 我将添加到目的地 producer send Msg1 producer send
  • java中的内联初始化块

    我有课 public class MyMain public static void main String arg Temp t new Temp System out println instance initialize class
  • 使用 IcyStreamMeta 从 SHOUTcast 获取元数据

    我正在为 Android 编写一个应用程序 从 SHOUTcast mp3 流中获取元数据 我正在使用我在网上找到的一个非常漂亮的类 我稍微修改了一下 但我仍然有两个问题 1 我必须使用 TimerTask 不断 ping 服务器来更新元数
  • Ant 复制文件而不覆盖

    Is there any command in ant to copy files from one folder structure to another without checking the last modified date t
  • 如何用Spring进行只读和读写的数据库路由

    我正在研究 Spring 中的事务路由 但我的应用程序存在运行时问题 我有两个 MySQL 数据库 一个用于读取 一个用于读 写 但是我的路由配置不起作用 当我应用只读配置时 我没有成功 这是我的配置 pom xml
  • JTable 中的格式化字段问题 - Integer 和 Double 之间的差异

    更新 已确认为错误当 columnClass 为 Double 时 JTable 无法将给定对象格式化为 Number 错误 ID 7051636 https bugs java com bugdatabase view bug bug i
  • 通过 jdbc 执行存储过程时获取网关超时

    我正在使用 struts2 框架 它基本上是这样的 ActionClass execute call function in business class which returns an object and store this obj
  • TreeSet 给出不正确的输出 - Java8

    在处理树集时 我发现了非常奇怪的行为 根据我的理解 以下程序应该打印两行相同的行 public class TestSet static void test String args Set
  • 配置 logback 以遵循 Java 配置,即 Logback 的纯 Java 配置

    我只是不喜欢 Logback 的 XML 或 Groovy 配置 更喜欢用 Java 进行配置 这也是因为我将在初始化后的不同时间在运行时更改配置 似乎对 Logback 进行 Java 配置的唯一方法是进行某种初始化劫持根追加器 http
  • 在 Java 中从 Json 字符串中提取字段

    我正在尝试从以下 Json 字符串中提取每个 company id 的 id String test company id 4100 data drm user id 572901936637129135 direct status id
  • java SWT透明复合背景

    我有复合对象 Composite composite new Composite shell SWT NONE composite setBounds new Rectangle 10 10 100 100 我如何使这个组合具有透明背景 我
  • HTML 解析和删除锚标记,同时使用 Jsoup 保留内部 html

    我必须解析一些html并删除锚标记 但我需要保留锚标记的innerHTML 例如 如果我的 html 文本是 String html div p some text a href some link text a p div 现在我可以解析
  • java中的new关键字是多余的吗?

    我来自 C 所以 java 的一个特性我不太理解 我读过所有对象都必须使用关键字创建new 但基元除外 现在 如果编译器可以识别原始类型 并且不允许您在不调用其构造函数的情况下创建对象new 有这个关键字的原因是什么new根本吗 有人可以提
  • Java HashSet 具有自定义相等标准? [复制]

    这个问题在这里已经有答案了 我一直在寻找类似于 Java TreeSet 在实例化时接收自定义比较器的能力 因此我不需要使用对象的默认相等 和哈希码 标准 我能想到的最接近的方法是将我的对象包装在一个私有的自定义类中 但这看起来很老套 这最
  • 如何在java中将ojalgo稀疏数组存储到文件中?

    我目前有一个 SparseStore 矩阵 我在其中执行大量计数和计算 我想将其存储到文件中 以便以后可以重复使用它 而无需重新执行之前的所有计算 我尝试了 Java 中的基本序列化 ObjectOutputStream outputStr
  • 在可序列化 Java 类中使用记录器的正确方法是什么?

    我有以下 doctored 我正在开发的系统中的类以及Findbugs http findbugs sourceforge net 正在生成一个SE BAD FIELD http findbugs sourceforge net bugDe
  • Java - 全局、可重用的加载对话框

    我正在尝试实现一个全局加载对话框 我想调用一些静态函数来显示对话框和一些静态函数来关闭它 与此同时 我正在主线程或子线程中做一些工作 我尝试以下操作 但对话框没有更新 最后一次 在再次隐藏之前 它会更新 private static Run
  • Java 压缩字符串

    我需要创建一个接收字符串并返回字符串的方法 防爆输入 AAABBBCCC 防爆输出 3A4B2C 好吧 这很尴尬 我在今天的面试中无法做到这一点 我正在申请初级职位 现在 我在家尝试制作一些静态工作的东西 我的意思是 不使用循环有点无用 但
  • Java邮件,设置回复地址不起作用

    我用java写了一个小的电子邮件发送程序 它有from to and reply to地址 当客户端尝试回复邮件时 应该能够回复reply to地址 目前它不起作用 我的代码如下 File Name SendEmail java impor

随机推荐

  • 通过 COM 将 DataTable 传递到 R

    我试图将数据从 SQL 传递到 C 然后传递到 R 服务器进行数据分析 然后返回到我的 Web 应用程序 但是 我使用的 COM 接口不允许在 C 和 R 之间传递复杂的数据类型 无数据表 我过去使用以下代码让它工作 int count d
  • NSTask 阻塞主线程

    我正在使用 NSTask 但是当我启动任务时 它会阻塞主线程 因此我无法更新它 直到任务结束 这是我的代码 NSString hostsforping google es pingdata NSTask alloc init pingdat
  • 使用 ListFragment 填充自定义视图列表

    我正在尝试使用片段在列表视图中显示元素 我创建了自定义视图 如下所示 list row xml 的图形表示 列表行 xml
  • 如何恢复过期的令牌[AWS Cognito]?

    我的网站使用 AWS 1 小时后 令牌就会过期 用户几乎无法执行任何操作 现在我正在尝试像这样刷新凭据 function getTokens session return accessToken session getAccessToken
  • 身份服务器单点注销,也从服务器注销

    这是我在依赖方中使用的注销代码 FederationConfiguration cfg FederatedAuthentication FederationConfiguration var fam FederatedAuthenticat
  • 使用 Marionette.ItemView 获取没有模型的视图?

    是否常规使用Marionette ItemView对于没有特定的视图类model与他们相关的财产 As Marionette View并不意味着可以直接使用 它看起来像一个ItemView作为具有方便的默认值和绑定的视图类是有意义的 或者
  • PHP PDO Sqlsrv 始终以字符串形式返回每个值

    如何从具有正确字段类型的数据库中获取值 我使用 PDO Sqlsrv 从数据库获取数据 并且总是以字符串形式接收数据 如下所示 customer id 1 My customer id字段类型应该是整数customer id 1 But p
  • SQL Server:如何将所有行的数据作为 Json 对象查询到其他列旁边?

    I have data like this I want to query result like this 这是我的代码 SELECT PML CODE PML NAME ENG SELECT PML ID PML NO PML CODE
  • 签入/签出文件时 Sharepoint“不支持的段类型”

    我想使用OneDrive REST API 上的签出 签入功能 https learn microsoft com en us onedrive developer rest api api driveitem checkout https
  • 可以包含 javascript 的 HTML 属性

    我正在寻找一个包含所有 html 属性的简单列表 这些属性可以包含在执行操作时自动运行的 javascript 我知道这在浏览器和版本之间会有所不同 但我宁愿更安全 也不愿后悔 我目前知道以下 javascript 属性 onload on
  • 应用程序因内存问题而终止

    在我的应用程序中 我收到此错误 来自调试器的消息 由于内存问题而终止 并且应用程序崩溃 我正在显示一个网页 但问题是内存使用量不太高 应用程序使用的内存不到 100 MB 仅当我在 iPhone 6 Plus 中运行该应用程序时 该应用程序
  • 单个主机上的多个 glibc 库

    我的 Linux SLES 8 服务器当前有 glibc 2 2 5 235 但我有一个程序无法在此版本上运行并且需要 glibc 2 3 3 是否可以在同一主机上安装多个 glibc 这是我在旧 glibc 上运行程序时遇到的错误 mya
  • 使用 javascript 读取多个同时键盘输入

    我注意到 JavaScript 中键盘输入有一些奇怪的行为 我可能在这里遗漏了一些非常明显的东西 但是是否有某种关于允许同时按下哪些键的规则 我使用布尔变量来保存四个键中每个键的状态 如下所示 这允许同时按下许多键 硬件允许 var up
  • 恢复 Git 存储库中已删除的文件夹

    我已经删除了文件夹中的所有内容 并且该文件夹为空 我的远程仓库中仍然有一份副本 但是当我做了一个git pull它没有放回已删除的文件不是应该这样做吗 所以我做了一些研究 发现你可以通过执行以下操作来恢复文件git checkout
  • 一次读取每个字符 - C

    对于下面的question https users cs cf ac uk Dave Marshall C node7 html SECTION00730000000000000000 练习 12336 从程序的标准输入中一次读取一个字符的
  • 将整数转换为随机但确定性可重复的选择

    如何将无符号整数 表示用户 ID 转换为看起来随机但实际上是确定性可重复的选择 必须以相等的概率选择该选项 无论输入整数的分布如何 例如 如果我有 3 个选择 即 0 1 2 例如 用户ID 123可以总是被随机分配选择2 而用户ID 23
  • git 日志格式中可选的缩进换行符

    我一直在摆弄git一些的别名log命令 我已经拥有了大部分我想要的东西 信用在这里 https stackoverflow com a 9074343 241211 但我在一件事情上遇到了麻烦 当我打电话时 git log graph fo
  • Android JNI - 调用 AttachCurrentThread 而不使用 DetachCurrentThread

    我一直在阅读有关 JNI 的内容 似乎无法弄清楚如果线程启动 gt 调用 AttachCurrentThread gt 进行一些 JNI 调用 gt 线程退出会发生什么 理想情况下 我们应该在线程退出之前调用 DetachCurrentTh
  • 通过C#发送截图

    我通过该代码捕获屏幕截图来保存 Graphics Grf Bitmap Ekran new Bitmap Screen PrimaryScreen Bounds Width Screen PrimaryScreen Bounds Heigh
  • Java中的双重比较技巧

    C 允许您将两个整数比较合并为一个以进行范围检查 例如 unsigned X lt unsigned Upper 当 0 lt X lt Upper Java 语言没有无符号类型 您是否找到了一种方法来获得相同的效果 使用单个比较并且没有太