小编nri*_*ilk的帖子

像这样的数字在 Java 中意味着什么:0b1000_1100_1010?(数字之间的“b”)

我正在练习 Java 课程的一些任务,但我遇到了这个变量

int x = 0b1000_1100_1010;
Run Code Online (Sandbox Code Playgroud)

我知道数字旁边的“f”和“d”分别表示该数字是float或double。但是数字之间的这个“b”呢?

我在这里看到这与bytes相关,但我不太明白它是如何工作的。

我的问题也适用于我刚刚在该链接上看到的数字之间的“x”。

谢谢!

java primitive-types

3
推荐指数
1
解决办法
215
查看次数

为什么将一个非常大的 long 数转换为 int 会给我们一个奇怪的输出(Java)?

我正在用 Java 练习一些转换,但我遇到了一种情况,在任何地方都找不到任何答案。有很多类似的问题和答案,但没有一个给我这个特殊案例的解释。

当我做类似的事情时

    long l = 165787121844687L;
    int i = (int) l;

    System.out.println("long: " + l);
    System.out.println("after casting to int: " + i);
Run Code Online (Sandbox Code Playgroud)

输出是

long: 165787121844687
after casting to int: 1384219087
Run Code Online (Sandbox Code Playgroud)

这个结果对我来说非常有趣。

我知道long类型是64位整数,int类型是32位整数。我还知道,当我们将较大的类型转换为较小的类型时,我们可能会丢失信息。我知道有一个Math.toIntExact()方法非常有用。

但是这个“ 1384219087 ”输出的解释是什么?数据丢失了,但为什么是这个数字呢?“ 165787121844687 ”怎么变成了“ 1384219087 ”?为什么代码甚至可以编译?

就是这样。谢谢!

java casting long-integer

0
推荐指数
1
解决办法
206
查看次数

标签 统计

java ×2

casting ×1

long-integer ×1

primitive-types ×1