像这样的数字在 Java 中是啥意思:0b1000_1100_1010? (数字之间的“b”)[重复]
Posted
技术标签:
【中文标题】像这样的数字在 Java 中是啥意思:0b1000_1100_1010? (数字之间的“b”)[重复]【英文标题】:What does a number like this mean in Java: 0b1000_1100_1010? (The "b" between the numbers) [duplicate]像这样的数字在 Java 中是什么意思:0b1000_1100_1010? (数字之间的“b”)[重复] 【发布时间】:2020-05-19 19:01:40 【问题描述】:我正在练习 Java 课程的一些任务,我遇到了这个变量
int x = 0b1000_1100_1010;
我知道数字旁边的“f”和“d”分别表示该数字是 float 或 double。但是这个介于数字之间的“b”呢?
我看到here这和bytes有关,但我不太明白它是如何工作的。
我的问题也适用于我刚刚在该链接上看到的数字之间的“x”。
谢谢!
【问题讨论】:
【参考方案1】:这是binary literal。
这是一种表示数字以二进制表示的符号。
就像使用十六进制表示法:0xF9
。在Java中,可以用0b1111_1001
来表示同一个数,十进制是249。
与字节无关,与位有关。您可以清楚地看到哪些位已设置,哪些未设置。默认情况下,以0b
开头的数字是int
,但您可以像0b1010L
这样写一个长的数字(注意尾随的L
)。
b
可以是小写或大写。所以这也是有效的:0B1111
。请注意,由于0b
前缀表示二进制表示,因此您不能使用除0
和1
(和_
来标记分隔符)以外的任何字符。
【讨论】:
来源:JLS 3.10.1:“二进制数字由前导 ASCII 字符 0b 或 0B 后跟一个或多个 ASCII 数字 0 或 1 和下划线组成”。它是 Java 7 中的新功能。【参考方案2】:Java 允许您在int
值中使用_
,如下所示:
public class Main
public static void main(String[] args)
int x = 1_2_3;
System.out.println(x + 100);
输出:
223
【讨论】:
"但是数字之间的这个“b”呢?"这如何回答这个问题? @AndyTurner - 我完全错过了b
。我是在你评论后才看到的。【参考方案3】:
字节数据类型是一个 8 位有符号二进制补码整数。最小值为-128,最大值为127(含)。
字节数据类型可用于在大型数组中节省内存, 内存节省实际上很重要。它们也可以用于 int 的位置,它们的限制有助于澄清您的代码;事实 变量的范围是有限的可以作为一种形式 文档。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
【讨论】:
以上是关于像这样的数字在 Java 中是啥意思:0b1000_1100_1010? (数字之间的“b”)[重复]的主要内容,如果未能解决你的问题,请参考以下文章