在Java中,我可以定义二进制格式的整数常量吗?

2022-08-31 11:40:17

类似于如何用十六进制或八进制定义整数常量,我可以在二进制中做到这一点吗?


答案 1

在Java 7中:

int i = 0b10101010;

旧版本的 Java 中没有二进制文本(有关替代方法,请参阅其他答案)。


答案 2

因此,随着Java SE 7的发布,二进制表示法成为开箱即用的标准。语法非常简单明了,如果你对二进制有一个很好的理解:

byte fourTimesThree = 0b1100;
byte data = 0b0000110011;
short number = 0b111111111111111; 
int overflow = 0b10101010101010101010101010101011;
long bow = 0b101010101010101010101010101010111L;

特别是在将类级变量声明为二进制文件这一点上,使用二进制表示法初始化静态变量绝对没有问题:

public static final int thingy = 0b0101;

只要小心不要用太多数据溢出数字,否则你会得到一个编译器错误:

byte data = 0b1100110011; // Type mismatch: cannot convert from int to byte

现在,如果你真的想花哨,你可以将Java 7中另一个整洁的新功能(称为数字文字)与下划线相结合。看看这些带有文字下划线的二进制表示法的花哨例子:

int overflow = 0b1010_1010_1010_1010_1010_1010_1010_1011;
long bow = 0b1__01010101__01010101__01010101__01010111L;

现在不是很好,很干净,更不用说可读性很强了吗?

我从我在TheServerSide上写的一篇关于这个主题的小文章中提取了这些代码片段。请随时查看更多详细信息:

Java 7 和二进制表示法:掌握 OCP Java 程序员 (OCPJP) 考试