Java SE 7中, 整数类型(byte, short, int以及long) 也可以使用二进制数系来表示。要指定一个二进制字面量,可以给二进制数字添加前缀 0b 或者 0B。下面的示例展示了一些二进制字面量:

// 一个8位的'byte'值:

byte aByte = (byte)0b00100001;

// 一个16位的'short'值:

short aShort = (short)0b1010000101000101;

// 几个32位的'int'值:

int anInt1 = 0b10100001010001011010000101000101;

int anInt2 = 0b101;

int anInt3 = 0B101; // B可以是大写或者小写.

// 一个64位的'long'值.注意"L"后缀:

long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;

相比于十六进制或者八进制,二进制字面量可以使数据之间的关系更加清晰。比如, 下面数组中的每个后续数字是按位旋转的:

public static final int[] phases = {

0b00110001,

0b01100010,

0b11000100,

0b10001001,

0b00010011,

0b00100110,

0b01001100,

0b10011000

}

十六进制中, 数字之间的关系并不清晰:

public static final int[] phases = {

0x31, 0x62, 0xC4, 0x89, 0x13, 0x26, 0x4C, 0x98

}

可以在代码中使用二进制字面量常量来验证一个规范文档, 比如一个针对假设的8位微处理器的模拟器:

public State decodeInstruction(int instruction, State state) {

if ((instruction & 0b11100000) == 0b00000000) {

final int register = instruction & 0b00001111;

switch (instruction & 0b11110000) {

case 0b00000000: return state.nop();

case 0b00010000: return state.copyAccumTo(register);

case 0b00100000: return state.addToAccum(register);

case 0b00110000: return state.subFromAccum(register);

case 0b01000000: return state.multiplyAccumBy(register);

case 0b01010000: return state.divideAccumBy(register);

case 0b01100000: return state.setAccumFrom(register);

case 0b01110000: return state.returnFromCall();

default: throw new IllegalArgumentException();

}

} else {

final int address = instruction & 0b00011111;

switch (instruction & 0b11100000) {

case 0b00100000: return state.jumpTo(address);

case 0b01000000: return state.jumpIfAccumZeroTo(address);

case 0b01000000: return state.jumpIfAccumNonzeroTo(address);

case 0b01100000: return state.setAccumFromMemory(address);

case 0b10100000: return state.writeAccumToMemory(address);

case 0b11000000: return state.callTo(address);

default: throw new IllegalArgumentException();

}

}

}

可以使用二进制字面量增强位图的可读性:

public static final short[] HAPPY_FACE = {

(short)0b0000011111100000,

(short)0b0000100000010000,

(short)0b0001000000001000,

(short)0b0010000000000100,

(short)0b0100000000000010,

(short)0b1000011001100001,

(short)0b1000011001100001,

(short)0b1000000000000001,

(short)0b1000000000000001,

(short)0b1001000000001001,

(short)0b1000100000010001,

(short)0b0100011111100010,

(short)0b0010000000000100,

(short)0b0001000000001000,

(short)0b0000100000010000,

(short)0b0000011111100000

}

java se7 变化_Java SE7新特性之二进制字面量相关推荐

  1. c++语言自定义操作符,C++11新特性之自定义字面量

    1.示例 C++11新标准中引入了用户自定义字面量,也叫自定义后缀操作符,即通过实现一个后缀操作符,将申明了该后缀标识的字面量转化为需要的类型.考察如下代码: long double operator ...

  2. java 8 并行_Java 8新特性之 并行和并行数组(八恶人-8)

    Jody Domingre 多莫歌·乔迪 "How you doing, dummy?" 你还好吗,傻瓜 一.基本介绍 Java8不仅增加了Stream,而且还增加了paralle ...

  3. java 文档比较功能_Java 12 新特性介绍,快来补一补

    Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本.在这之前我们已经介绍过其他版本的新特性,如果需要可以点击下面的链接进行阅读. Switch 表达式 (JEP ...

  4. Java基础:JDK1.5新特性

    1. ENUM枚举 1.1 枚举概述 枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例 ...

  5. Java9发布回顾Java 8的十大新特性

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...

  6. [转载] Java9发布回顾Java 8的十大新特性

    参考链接: Java中的DoubleStream mapToObj() java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习 ...

  7. Java EE 8的五大新特性详解

    Java EE 8的五大新特性详解 2018.4.3 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. Java EE 8带来了很多新特性,其中最好的新特性有下面五个. 备受期待的Ja ...

  8. 5分钟学会Java 9~Java11的七大新特性

    Java11 发布了,然而很多公司还在用Java 8 ,本文会简要介绍Java 9 -11 引入的新语法和API. 本地变量类型推断 Java 10 就已经引入了新关键词var,该关键词可以在声明局部 ...

  9. Java 10的10个新特性,将彻底改变你写代码的方式

    转载自 Java 10的10个新特性,将彻底改变你写代码的方式 Java 9才发布几个月,很多玩意都没整明白,现在Java 10又要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,J ...

最新文章

  1. 统计学 计算机论文,统计学专业论文范文
  2. 51nod 1013【快速幂+逆元】
  3. ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频
  4. mysql128位整数_mysql的数据类型
  5. 加快mysql导入、导出速度
  6. java中volatile关键字
  7. 【双100%解法】剑指 Offer 22. 链表中倒数第k个节点
  8. Scale计算公式 - 关于电压值与二进制数值间的转换
  9. 一步一步学习Servlet之Cookie使用
  10. 在Edge浏览器中设置编码方式
  11. android 音量流类型,android 音量控制setVolumeControlStream
  12. 线性代数笔记1.1n阶行列式
  13. Allure趋势图本地显示
  14. [UIView numberofRowsInSection]unrecognized selector sent to instance 0x1808bef0 错误
  15. 第三章:密码学基本理论
  16. Anaconda下载simpleITK包和pytorch包
  17. 用Unity开发一款2D横版游戏demo
  18. 数据库的视图(View)
  19. 红色主题旅游网站/旅游网站
  20. 一、Glade-3安装配置

热门文章

  1. 实现Sleep函数的四种方法
  2. VirtualBox 里安装win7 / win8 不能全屏的解决方法
  3. RescoPhotoViewer图片查看v5.0_s60v3破解汉化版by八神
  4. Modem2G/3G/4G/5G:通信领域常见名词缩写释义(VoLTE,CSFB,CA,RAT...)
  5. 08/14 国富论笔记
  6. HDU5040Instrusive
  7. 坑之 Jpa 执行原生SQL 返回映射为对象
  8. 排序-------简单选择实现(Java实现)
  9. 第6、7章 Java复习
  10. mysql经纬度存储格式geometry_MySQL的geometry类型处理经纬度距离的方法介绍