【发布时间】:2022-01-20 12:39:00
【问题描述】:
Char、int 和 long 都是整数,但还有其他大的位。
我知道,例如,如果您从整数创建 long:
int a=39; long b=a;
long中的不是64位的数,也是32位的整数。
当我们制作时:
int a=39; long b=aL;
我已经读过,如果您在 long 中添加例如 L,那么 long 也是一个 64 位的数字。但是我读到Java在内部将之前的整数视为整数,然后通过L,数字变为64位。但在此之前,数字也是短时间存储在长32位中的。
所以我读过,通常总是首先将一个 32 位的整数形成为长整数,然后将其制成 64 位。因此,即使有人做了 long test =93L;,在 long 中首先会创建一个 32 位的整数,然后用 L 对其进行扩展,从而变成 64 位。所以作为一个中间步骤,你总是有一个整数。对吗?
如果是,我怎样才能将 char 例如 char test1 ='A' 转换为 long 而不将它们转换为 32 位整数?因为如果我是对的,如果我使long test2=test1; 长整数中没有 64 位的长整数,只有一个 32 位的整数。这是真的吗?
或者说现在 long 是一个 64 位的整数?如果是这样,它之前是 32 位吗?
如果我说的是真的,我怎么能直接把 char 做成 64 位,而不是先把它变成 int 呢?
【问题讨论】:
-
我认为这个问题不属于 Stack Overflow。对于理论问题,您可能希望将其发布在 Stack Exchange Computer Science 或类似频道中。
-
@hfontanez:这绝不是理论上的。
-
好的,但是我怎么知道这一点,而不知道有关 java 的理论方面?
-
需要查看生成的中间代码。但我不知道怎么做。
-
@wdqoihj2 我会先做一个只做
long a = 'a';的小程序来检验你的假设,编译,反汇编,看看这个“短期32位”的业务是不是实际上是真的。