现在,我一直在努力学习Java编程,我想知道为什么我们用的东西一样Float
,short
和int
我们可能只是使用Long
和Double
?
我不明白那部分。
这是一个很好的问题,尤其是如果您来自的语言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位boolean
在boolean
s = 1个半字节= 4位的数组中请注意,这些都是 小写的 。这意味着它们是 基元 ,并且与数组一起构成 Java 中 所有数据 的构造块。
Java有时还会使用这些 Title-Case
类来包装基元(包装是指当您使用一个类来表示类中的对象时,例如购买平板电脑并将其放入包装盒中。您只关心平板电脑,但是您会得到一个围绕它的框,以临时表示并按住它)。这些如下:
Byte
包裹 byte
Short
包裹 short
Integer
包裹 int
Long
包裹 long
Float
包裹 float
Double
包裹 double
Character
包裹 char
Boolean
包裹 boolean
Number
作为一个通用的号码,并且可以是Byte
,Short
,Integer
,Long
,Float
,Double
,或自定义相同数目BigInteger
。您甚至可以使用它来制作自己的电话号码!您绝对可以使用,double
并long
使用所有数字!但是,当您处理大量数字时(请记住:实际上,Java中的所有内容都归结为数字),
您应该使用尽可能少的数据来完成一项任务,因此不会耗尽内存。
这是一种惯例,即使是像Google这样的大公司也使用这种做法,如我们所见,当Gangnam
Style的视图计数器超过的限制时int
,表明他们宁愿先只使用32位数字作为计数器,而不是一个64位的
现在,尽管他们需要它,但他们进行了更新。我建议您采用这种做法!
这是一个关于Android Beacon库的问题。 应用程序使用连续进行后台扫描 一旦检测到匹配的信标(即触发),此后台扫描将被禁用,并启动开始对信标进行测距的前台服务。 (你可以参考这篇文章了解更多背景) 对于这个原子测试项目,您也可以参考这个存储库。 BeaconApplication负责连续的背景扫描 selfbeacervice负责主动前景测距。 (如果您手头有一个信标,并且想要构建和测试
问题内容: 我这里有一些简单的代码 每次单击按钮,控制台上都会显示2条日志,指示该组件呈现两次。 这是一个codeandbox链接,可以尝试一下。 问题答案: 呈现您的App组件的原因是在其中导致代码在严格模式下运行,并且在严格模式下,控制台显示两次,因为每个功能在开发模式下均运行两次 根据react docs: 严格模式无法自动为您检测副作用,但可以通过使其更具确定性来帮助您发现它们。这是通过有
我是新来的反应,什么来理解为什么console.log在渲染函数内部被调用两次? 如果我不从组件扩展,而是使用功能,控制台只打印一次
问题内容: 代码很简单: 您会看到这里有一个函数,我们只在体内调用它一次。但是在控制台中,它打印两次: 您可以在此处观看现场演示:http : //plnkr.co/edit/tb8RpnBJZaJ73V73QISC?p=preview 为什么该函数已被调用两次? 问题答案: 在AngularJS中,用大括号括起来的任何东西都是一个在摘要循环 中至少 被求值 一次 的表达式。 __ Angular
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能的重复: 如何在PHP中获得以分钟为单位的时差 我正在工作表上计算迟到和迟到的员工。我将登录时间存储在表中(类型:时间)。我能够从数据库中获取时间,我想在单独的列中显示时差。 即,如果员工在或之前登录,则其正确的时间和时间差应显示为空。如果他在时间之后(即或更晚)登录,则时差应为。同样明智的是,我需要计算时间差。 一次是恒定的,即,另一
问题内容: 基本上我想知道为什么它什么都不输出: 您可以假设它应该产生输出,我已经运行另一行来确认 看来您不能多次通过管道传递tail的输出!有人知道这笔交易是什么,有解决方案吗? 编辑:到目前为止,要回答问题,该文件肯定具有应由grep显示的内容。作为grep是否这样做的证据: 输出正确显示,但是如果使用它代替: 没有输出显示。 如果真的有帮助,我正在运行ubuntu 10.04 问题答案: 在