当前位置: 首页 > 面试题库 >

Java为什么不支持unsigned ints?

冯淳
2023-03-14
问题内容

Java为什么不包括对无符号整数的支持?

在我看来,这是一个奇怪的遗漏,因为它们允许人们编写不太可能在意外大的输入上产生溢出的代码

此外,使用无符号整数可以是一种自我证明的形式,因为它们指示无符号int打算保留的值永远不会为负。

最后,在某些情况下,无符号整数对于某些操作(例如除法)可能更有效。

包括这些的不利之处是什么?


问题答案:

在两行之间阅读时,我认为逻辑是这样的:

  • 通常,Java设计人员希望简化可用数据类型的清单
  • 对于日常用途,他们认为最常见的需求是签名数据类型
  • 为了实现某些算法,有时需要无符号算术,但是将要实现这种算法的那种程序员也将具有“工作”能力,以对带符号数据类型进行无符号算术
    通常,我会说这是一个合理的决定。可能,我会:

  • 将字节设置为无符号,或者至少为该数据类型提供了一个有符号/无符号的替代名称(可能具有不同的名称)(将其签名有利于一致性,但是什么时候需要一个有符号字节?)

  • 删除了“短”(你上次使用16位带符号算术的时间?)
    尽管如此,通过一点点混合,对不超过32位的无符号值进行的操作并不算太糟糕,并且大多数人不需要进行无符号的64位除法或比较。


 类似资料:
  • 本文向大家介绍为什么Java不支持<<相关面试题,主要包含被问及为什么Java不支持<<时的应答技巧和注意事项,需要的朋友参考一下 Java添加了运算符“ >>>”来执行逻辑右移,但是由于 逻辑和算术左移运算是相同的 ,因此Java中没有“ <<<”运算符。 来自Java的Shifts …

  • 我注意到一件奇怪的事情,显然Firefox说它支持HTTPS上的Brotli,但不支持HTTP?Brotli与gzip类似,但效率更高,为什么它会将其限制为HTTPS?在HTTPS选项卡上,我看到: 他被派去了。但在另一个网站上,我没有看到。为什么它不能做Brotli压缩HTTP?

  • 问题内容: 某些哈希表方案(例如布谷鸟哈希或动态完美哈希)依赖于通用哈希函数的存在以及能够收集表现出冲突的数据并通过从通用哈希函数系列中选择一个新的哈希函数来解决这些冲突的能力。 。 不久前,我试图在以杜鹃哈希为后盾的Java中实现哈希表,并遇到了麻烦,因为尽管所有Java对象都有一个函数,但返回的值对于每个对象都是固定的(当然,除非对象更改)。这意味着如果没有用户提供外部家族的通用哈希函数,就不

  • 问题内容: 为什么Java中的泛型只能用于类,而不能用于原始类型? 例如,这可以正常工作: 但这是不允许的: 问题答案: ava中的泛型是一个完全编译时的结构-编译器将所有泛型使用转换为正确的类型。这是为了保持与以前的JVM运行时的向后兼容性。 这个: 变成(大致): 因此,任何用作泛型的东西都必须可转换为Object(在此示例中返回),而原始类型则不是。因此它们不能用于泛型。

  • 为什么Java中的泛型可以处理类而不能处理基元类型? 例如,这个操作很好: 但这是不允许的:

  • 问题内容: 我已经多次看到,负填充的前景可能会帮助某些页面元素的CSS开发变得越来越好。但是,W3C CSS中没有负填充的规定。这背后的原因是什么?该属性是否有阻碍其使用的阻碍?感谢您的回答。 更新 例如,我看到的情况是,如果您使用的字体的垂直间距为20px,并且希望在字体底部应用虚线边框,例如出现超链接时。在这种情况下,您会发现样式太简陋,因为虚线边框会出现在指定单词下方20px。如果您使用负边