小编典典

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

java

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

我不明白那部分。


阅读 221

收藏
2020-11-30

共1个答案

小编典典

这是一个很好的问题,尤其是如果您来自的语言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位的
现在,尽管他们需要它,但他们进行了更新。我建议您采用这种做法!

2020-11-30