001package java7;
002
003import com.sandwich.koan.Koan;
004
005import static com.sandwich.koan.constant.KoanConstants.__;
006import static com.sandwich.util.Assert.assertEquals;
007
008public class AboutJava7LiteralsEnhancements {
009
010    @Koan
011    public void binaryLiterals() {
012        //binary literals are marked with 0b prefix
013        short binaryLiteral = 0b1111;
014        assertEquals(binaryLiteral, __);
015    }
016
017    @Koan
018    public void binaryLiteralsWithUnderscores() {
019        //literals can use underscores for improved readability
020        short binaryLiteral = 0b1111_1111;
021        assertEquals(binaryLiteral, __);
022    }
023
024    @Koan
025    public void numericLiteralsWithUnderscores() {
026        long literal = 111_111_111L;
027        //notice capital "B" - a valid binary literal prefix
028        short multiplier = 0B1_000;
029        assertEquals(literal * multiplier, __);
030    }
031
032    @Koan
033    public void negativeBinaryLiteral() {
034        int negativeBinaryLiteral = 0b1111_1111_1111_1111_1111_1111_1111_1100 / 4;
035        assertEquals(negativeBinaryLiteral, __);
036    }
037
038    @Koan
039    public void binaryLiteralsWithBitwiseOperator() {
040        int binaryLiteral = ~0b1111_1111;
041        assertEquals(binaryLiteral, __);
042    }
043
044}