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

每次长时间重复使用两次时,为什么Java中会有如此多的数字类型?

陆俊智
2023-03-14
问题内容

现在,我一直在努力学习Java编程,我想知道为什么我们用的东西一样Floatshortint我们可能只是使用LongDouble

我不明白那部分。


问题答案:

这是一个很好的问题,尤其是如果您来自的语言JavaScript不能区分数字类型。

Java比那些语言要严格一些,并且您编写的所有内容都会首先编译为所谓的字节码,类似于汇编语言,但只能由Java虚拟机(JVM)读取。因此,您必须准确指定表示数据所需的位数。即使使用更抽象的概念(例如)String,它仍然成为JVM可以读取的代码,该代码准确地说明了它代表多少位。

这是它在Java中的分解方式:

  • byte= 1字节,带符号= 1个符号位和7个幅度位(在Wikipedia上了解更多信息)
  • short = 2个字节,带符号= 1个符号位和15个幅度位
  • int = 4字节,带符号= 1个符号位和31个幅度位
  • long = 8字节,带符号= 1个符号位和63个幅度位
  • float= 4字节,带符号= 1个符号位,8个指数位,23个尾数位(在Wikipedia上了解更多信息)
  • double = 8字节,带符号= 1个符号位,11个指数位,52个尾数位
  • char = 2个字节,无符号= 16个幅度位
  • boolean = 1字节,无符号= 8位
  • booleanbooleans = 1个半字节= 4位的数组中

请注意,这些都是 小写的 。这意味着它们是 基元 ,并且与数组一起构成 Java所有数据 的构造块。

Java有时还会使用这些 Title-Case
类来包装基元(包装是指当您使用一个类来表示类中的对象时,例如购买平板电脑并将其放入包装盒中。您只关心平板电脑,但是您会得到一个围绕它的框,以临时表示并按住它)。这些如下:

  • Byte 包裹 byte
  • Short 包裹 short
  • Integer 包裹 int
  • Long 包裹 long
  • Float 包裹 float
  • Double 包裹 double
  • Character 包裹 char
  • Boolean 包裹 boolean
  • Number作为一个通用的号码,并且可以是ByteShortIntegerLongFloatDouble,或自定义相同数目BigInteger。您甚至可以使用它来制作自己的电话号码!

摘要

您绝对可以使用,doublelong使用所有数字!但是,当您处理大量数字时(请记住:实际上,Java中的所有内容都归结为数字),
您应该使用尽可能少的数据来完成一项任务,因此不会耗尽内存。

这是一种惯例,即使是像Google这样的大公司也使用这种做法,如我们所见,当Gangnam
Style的视图计数器超过的限制时int
,表明他们宁愿先只使用32位数字作为计数器,而不是一个64位的
现在,尽管他们需要它,但他们进行了更新。我建议您采用这种做法!



 类似资料:
  • 这是一个关于Android Beacon库的问题。 应用程序使用连续进行后台扫描 一旦检测到匹配的信标(即触发),此后台扫描将被禁用,并启动开始对信标进行测距的前台服务。 (你可以参考这篇文章了解更多背景) 对于这个原子测试项目,您也可以参考这个存储库。 BeaconApplication负责连续的背景扫描 selfbeacervice负责主动前景测距。 (如果您手头有一个信标,并且想要构建和测试

  • 问题内容: 我这里有一些简单的代码 每次单击按钮,控制台上都会显示2条日志,指示该组件呈现两次。 这是一个codeandbox链接,可以尝试一下。 问题答案: 呈现您的App组件的原因是在其中导致代码在严格模式下运行,并且在严格模式下,控制台显示两次,因为每个功能在开发模式下均运行两次 根据react docs: 严格模式无法自动为您检测副作用,但可以通过使其更具确定性来帮助您发现它们。这是通过有

  • 问题内容: 代码很简单: 您会看到这里有一个函数,我们只在体内调用它一次。但是在控制台中,它打印两次: 您可以在此处观看现场演示:http : //plnkr.co/edit/tb8RpnBJZaJ73V73QISC?p=preview 为什么该函数已被调用两次? 问题答案: 在AngularJS中,用大括号括起来的任何东西都是一个在摘要循环 中至少 被求值 一次 的表达式。 __ Angular

  • 我是新来的反应,什么来理解为什么console.log在渲染函数内部被调用两次? 如果我不从组件扩展,而是使用功能,控制台只打印一次

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能的重复: 如何在PHP中获得以分钟为单位的时差 我正在工作表上计算迟到和迟到的员工。我将登录时间存储在表中(类型:时间)。我能够从数据库中获取时间,我想在单独的列中显示时差。 即,如果员工在或之前登录,则其正确的时间和时间差应显示为空。如果他在时间之后(即或更晚)登录,则时差应为。同样明智的是,我需要计算时间差。 一次是恒定的,即,另一

  • 问题内容: 基本上我想知道为什么它什么都不输出: 您可以假设它应该产生输出,我已经运行另一行来确认 看来您不能多次通过管道传递tail的输出!有人知道这笔交易是什么,有解决方案吗? 编辑:到目前为止,要回答问题,该文件肯定具有应由grep显示的内容。作为grep是否这样做的证据: 输出正确显示,但是如果使用它代替: 没有输出显示。 如果真的有帮助,我正在运行ubuntu 10.04 问题答案: 在