【问题标题】:Why are there so many types of number in Java when long and double work every time?为什么每次都是 long 和 double 工作时,Java 中有这么多类型的数字?
【发布时间】:2015-04-18 23:09:36
【问题描述】:

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

我不明白那部分。

【问题讨论】:

标签: java int double long-integer var


【解决方案1】:

很好的问题,特别是如果您来自像 JavaScript 这样不区分数字类型的语言。

Java 比那些语言更严格一些,你写的所有东西都首先被编译成所谓的字节码,这有点像汇编语言,但它只能被 Java 虚拟机 (JVM) 读取。因此,您必须准确指定表示数据所需的位数。即使使用像 String 这样更抽象的概念,它仍然会变成 JVM 可以读取的代码,它会准确说明它代表多少位。

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

  • byte = 1 字节,有符号 = 1 个符号位和 7 个幅度位 (Read more on Wikipedia)
  • short = 2 字节,有符号 = 1 个符号位和 15 个幅度位
  • int = 4 字节,有符号 = 1 个符号位和 31 个幅度位
  • long = 8 字节,有符号 = 1 个符号位和 63 个幅度位
  • float = 4 字节,有符号 = 1 个符号位,8 个指数位,23 个尾数位 (Read more on Wikipedia)
  • double = 8 字节,有符号 = 1 个符号位,11 个指数位,52 个尾数位
  • char = 2 字节,无符号 = 16 幅度位
  • boolean = 1 字节,无符号 = 8 位
  • booleanbooleans 的数组中 = 1 个半字节 = 4 位

请注意,这些都是小写。这意味着它们是原语,并且与数组一起构成了Java 中所有数据的构建块。

还有这些 Title-Case 类,Java 有时会使用这些类来包装原语(包装是当您使用类来表示类中的对象时,例如购买平板电脑并将其放入盒子。你只关心平板电脑,但你让它周围的盒子暂时代表和持有它)。它们如下:

  • Byte 包装 byte
  • Short 包装 short
  • Integer 包装 int
  • Long 包装 long
  • Float 包装 float
  • Double 包装 double
  • Character 包装 char
  • Boolean 包裹 boolean
  • Number 充当通用编号,可以是 ByteShortIntegerLongFloatDouble 或自定义编号,如 BigInteger。您甚至可以使用它来制作自己的号码!

总结

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

即使像 Google 这样的大公司也使用这种做法,正如我们所见 when the view counter for Gangnam Style surpassed the limit of an int,表明他们最初更喜欢只使用 32 位数字而不是 64 位数字作为计数器。不过,既然他们需要它,他们就更新了。我建议您采用这种做法!

【讨论】:

    【解决方案2】:

    如果您知道要保存的数据的范围,那么使用可以保存它的尽可能小的原始数据类型是有意义的。这总是比分配比您需要的更多的内存更有效。

    【讨论】:

    • 谢谢,这很有帮助。
    【解决方案3】:

    欢迎来到 Java 编程。 首先点击键盘上的插入键来切换块光标。

    不应将数据类型视为它消耗的存储量,而应将其视为它为该类型的变量和表达式定义的行为 - Java 完整参考

    因此,通过选择正确的数据类型,您可以指定其行为或界限。注意:简而言之,byte 可能并不总是在内存中高效,因为它们很可能在计算过程中被转换为 int。

    【讨论】:

    • 谢谢,好学,谢谢理解和礼貌
    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2020-09-22
    相关资源
    最近更新 更多