In Java, can I define an integer constant in binary format?

后端 未结 8 1174
[愿得一人]
[愿得一人] 2020-11-27 14:50

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 sea

8条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-27 15:26

    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
    

    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?

    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 and Binary Notation: Mastering the OCP Java Programmer (OCPJP) Exam

提交回复
热议问题