在 Java 中,我可以定义二进制格式的整数常量吗? [英] In Java, can I define an integer constant in binary format?
问题描述
类似于如何定义十六进制或八进制的整数常量,我可以用二进制来定义吗?
Similar to how you can define an integer constant in hexadecimal or octal, can I do it in binary?
我承认这是一个非常简单(而且愚蠢)的问题.我的谷歌搜索结果是空的.
I admit this is a really easy (and stupid) question. My google searches are coming up empty.
推荐答案
因此,随着 Java SE 7 的发布,二进制表示法成为开箱即用的标准.如果您对二进制文件有很好的理解,则语法非常简单明了:
So, with the release of Java SE 7, binary notation comes standard out of the box. The syntax is quite straight forward and obvious if you have a decent understanding of binary:
byte fourTimesThree = 0b1100;
byte data = 0b0000110011;
short number = 0b111111111111111;
int overflow = 0b10101010101010101010101010101011;
long bow = 0b101010101010101010101010101010111L;
特别是在将类级别变量声明为二进制文件方面,使用二进制表示法初始化静态变量绝对没有问题:
And specifically on the point of declaring class level variables as binaries, there's absolutely no problem initializing a static variable using binary notation either:
public static final int thingy = 0b0101;
注意不要用太多数据溢出数字,否则你会得到一个编译器错误:
Just be careful not to overflow the numbers with too much data, or else you'll get a compiler error:
byte data = 0b1100110011; // Type mismatch: cannot convert from int to byte
现在,如果你真的想变得有趣,你可以将 Java 7 中的其他简洁的新特性称为数字文字和下划线.看看这些带有文字下划线的二进制表示法的奇特示例:
Now, if you really want to get fancy, you can combine that other neat new feature in Java 7 known as numeric literals with underscores. Take a look at these fancy examples of binary notation with literal underscores:
int overflow = 0b1010_1010_1010_1010_1010_1010_1010_1011;
long bow = 0b1__01010101__01010101__01010101__01010111L;
现在是不是很好很干净,更不用说可读性高了?
Now isn't that nice and clean, not to mention highly readable?
我从我在 TheServerSide 上写的一篇关于该主题的小文章中提取了这些代码片段.请随时查看以获取更多详细信息:
I pulled these code snippets from a little article I wrote about the topic over at TheServerSide. Feel free to check it out for more details:
Java 7 和二进制符号:掌握 OCP Java 程序员 (OCPJP) 考试
这篇关于在 Java 中,我可以定义二进制格式的整数常量吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!