为什么Java中每次long和double都工作时会有这么多类型的数字?

2023-11-29

现在我一直在尝试学习Java编程,我想知道为什么我们使用这样的东西Float, short, and int当我们可以只是使用Long and Double?

我不明白那部分。


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

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

下面是它在 Java 中的分解方式:

  • byte= 1 个字节,有符号 = 1 个符号位和 7 个幅度位(在维基百科上阅读更多内容)
  • short= 2 个字节,有符号 = 1 个符号位和 15 个幅度位
  • int= 4 字节,有符号 = 1 个符号位和 31 个幅度位
  • long= 8 字节,有符号 = 1 个符号位和 63 个幅度位
  • float= 4 字节,有符号 = 1 个符号位,8 个指数位,23 个尾数位(在维基百科上阅读更多内容)
  • double= 8 字节,有符号 = 1 个符号位,11 个指数位,52 个尾数位
  • char= 2 字节,无符号 = 16 个幅度位
  • boolean= 1 字节,无符号 = 8 位
  • boolean在一个数组中booleans = 1 半字节 = 4 位

注意这些都是小写。这意味着他们是原语,并且与数组一起构成了以下的构建块所有数据都用Java编写.

还有这些标题-大小写Java 有时用来包装基元的类(包装是指当您使用类来表示类内的对象时,就像购买平板电脑并将其放入盒子中一样。您只关心平板电脑,但您将其周围的盒子暂时代表并持有它)。具体如下:

  • Byte wraps byte
  • Short wraps short
  • Integer wraps int
  • Long wraps long
  • Float wraps float
  • Double wraps double
  • Character wraps char
  • Boolean wraps boolean
  • Number充当通用号码,并且可以是Byte, Short, Integer, Long, Float, Double,或自定义数字,例如BigInteger。您甚至可以用它来制作自己的数字!

Summary

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

正如我们所见,即使像 Google 这样的大公司也采用这种做法当《江南Style》的观看次数突破了限制int,表明他们一开始更喜欢仅使用 32 位数字而不是 64 位数字作为计数器。不过,现在他们需要它,他们进行了更新。这是我建议您采用的做法!

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

为什么Java中每次long和double都工作时会有这么多类型的数字? 的相关文章

随机推荐

  • CSS3 选择器最后一个不属于 X 类的元素

    我正在尝试设置 Y 类中不属于 X 类的最后一个元素的样式 HTML 示例 div class container div class Y div div class Y div div class X Y div div 我都尝试过 Y
  • 找不到权威提供商的元数据

    我已将 Snapchat 的创意套件集成到我的 Android 应用程序中 处理后 我从服务器收到字节数组形式的图像 将其保存到磁盘 然后将文件发送到 Snapchat 的创意套件 如下所示 private fun downloadImag
  • 为什么手动初始化为 null 的原型仍然继承自 Object

    如果我写这个 var o Object create null alert o instanceof Object this is false 这怎么会变成真的 function o o prototype null alert new o
  • 提供对 IBM WebSphere MQ 的匿名访问

    我是新来的IBM WebSphere MQ 我正在运行它docker容器 用户 sampleuser and root 是 的一部分mqm 容器内的组 我能够以 root 用户和 sampleuser 身份从主机访问 MQ 我也在主机中创建
  • 为什么百分比高度在我的 div 上不起作用? [复制]

    这个问题在这里已经有答案了 我有两个高度为90 的div 但是显示不一样 我尝试在它们周围放置一个外部 div 但这没有帮助 此外 在 Firefox Chrome Opera 和 Safari 上也是如此 有人可以解释为什么我遇到这个问题
  • 使用数据触发控制故事板,但只触发一次

    我使用数据触发器来控制一些故事板 但它只能触发一次
  • Java - 同步线程 - 输出顺序错误

    在玩了一年 Java 之后 我正在阅读 Java 完整参考 第 9 版 到目前为止 我对这本书很满意 但我现在在同步线程方面遇到了一个非常奇怪的问题 package syncro class Callme void call String
  • 同时等待具有独立延续的多个异步调用

    在多种情况下 我需要调用多个异步调用 来自同一个事件处理程序 这些调用可以彼此独立地进行 每个调用都有自己的延续来更新 UI 以下简单的实现导致三个异步操作按顺序执行 private async void button Click obje
  • Google 地图 JavaScript API - fitbounds 与 setCenter 一起使用

    我一直在寻找解决这个问题的方法 但我似乎找不到解决这个问题的东西 我得到的最接近的是这个线程 但这行不通 我想做的是基于一组运行良好的标记来运行 fitbounds 但我还想根据用户位置 plunk 中的弹跳标记 将地图居中 并仍将所有标记
  • 打印 pandas 数据框时抑制描述性输出

    假设我有数据框 c a np random random 6 2 c pd DataFrame a c columns A B 打印第 0 行值 print c loc 0 结果是 A 0 220170 B 0 261467 Name 0
  • 如何渲染大量相似的物体?

    我有大量对象 至少 10 000 个粒子 例如三角形 正方形 圆形或球体 实际上现在我有一个对象 我渲染了很多次 它看起来像这样 for int i 0 i
  • android 版 admob 入门 - 对文档感到困惑

    我刚刚开始考虑将 Admob 广告放入我正在构建的 Android 应用程序中 到目前为止 还没有好的结果 我一直在遵循从 adMob 网站下载的 AdMod Android SDK Instructions pdf 中的示例 但感到困惑
  • Android:AsyncTask 的处理程序

    我将 AsyncTask 与 ProgressDialog 结合使用 查看我的代码 我在 onPostExecute 中遇到问题 如果任务是第一次运行 它会在handleMessage 中收到progressDialog 的Null Poi
  • 反转 pandas 中的 get_dummies 编码

    列名称为 ID 1 2 3 4 5 6 7 8 9 col 值为 0 或 1 我的数据框如下所示 ID 1 2 3 4 5 6 7 8 9 1002 0 1 0 1 0 0 0 0 0 1003 0 0 0 0 0 0 0 0 0 1004
  • SignalR(v2.2.0) OnDisconnected 设置用户离线

    我使用以下代码在组中添加用户 并使用以下代码将用户保存在该特定组的数据库中 SERVER public class ChatHub Hub public async Task JoinRoom string user Id string r
  • 将小数转换为任何基数? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我知道 strtoll 但它将任何基数基数 2 到 36 之间 转换为十进制 我需要通过将十进制转换为任何基数基数来执行相反的操作 一个例子是十进制 130 基数 12 AA 以下代
  • 如何在 Python 中根据 DTD 文件验证 xml

    我需要验证 XML 字符串 而不是文件 针对 DTD 描述文件 这怎么能在python 另一个不错的选择是lxml的验证我觉得用起来很愉快 取自 lxml 站点的一个简单示例 from StringIO import StringIO fr
  • 在 WAMP PHP Google+ 项目中安装 Composer,PHP 无法识别

    我正在关注这个 PHP Google 教程我正在尝试在我的 WAMP 目录中安装作曲家 C wamp www gplus quickstart php gt curl s https getcomposer org installer ph
  • 更改 WiFi MAC 地址 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我是致力于该项目的开发人员之一薮猫项目我们正在考虑使用华为创意U1850作为我们Android开发的默认平台 活动 我们从当地经销商之一购买了几部手机 在澳大利亚这里 我们注意到 我
  • 为什么Java中每次long和double都工作时会有这么多类型的数字?

    现在我一直在尝试学习Java编程 我想知道为什么我们使用这样的东西Float short and int当我们可以只是使用Long and Double 我不明白那部分 很好的问题 特别是如果你来自这样的语言JavaScript它不区分数字