我正在练习 Java 课程的一些任务,但我遇到了这个变量
int x = 0b1000_1100_1010;
Run Code Online (Sandbox Code Playgroud)
我知道数字旁边的“f”和“d”分别表示该数字是float或double。但是数字之间的这个“b”呢?
我在这里看到这与bytes相关,但我不太明白它是如何工作的。
我的问题也适用于我刚刚在该链接上看到的数字之间的“x”。
谢谢!
我正在用 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 ”?为什么代码甚至可以编译?
就是这样。谢谢!