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 }
本文翻译自Oracle官方文档http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html,如有不正确的地方,敬请指正,谢谢!
相关推荐
Java SE7版本引入了许多新特性,增强了平台的效率和可靠性。以下是这个规范中的关键知识点: 1. **类文件结构**:Java源代码被编译成字节码,存储在类文件中。每个类文件包含元数据、方法和字段定义。了解类文件...
Java语言规范是由一群资深的Java开发者撰写的,其中包括James Gosling(Java之父)、Bill Joy、Guy Steele和Gilad Bracha等。这份文档是JSR-000901Java® Language Specification的第七版,即Java SE7版。 **版权...
第二章:java虚拟结构(运行时区域内存:寄存器,java虚拟机栈,java堆,方法去,运行时常量池,本地方法栈); 第三章:为java虚拟机编译; 第四章:Class文件格式; 第五章:加载、链接与初始化
Java虚拟机规范(Java SE7)主要讨论了Java虚拟机(JVM)的规范,其中包括了对JVM的详细描述和操作原理的解释。这份规范文件不仅仅是为那些想要了解Java虚拟机的程序员准备的,对于那些想要深入了解Java语言细节的...
根据提供的文件信息,“OCP Java SE7 Programmer II Certification Guide”主要针对的是希望获得Oracle Certified Professional (OCP) Java SE7 Programmer II认证的专业人士。本书详细介绍了备考1Z0-804考试所需...
4. **二进制字面量和下划线分隔数字**:可以使用二进制前缀`0b`表示二进制数,数字间可以用下划线提高可读性。 5. **Try-with-resources**:自动关闭资源的机制,保证资源(如文件流)在使用完毕后会被正确关闭,...
《OCA Java SE7 Programmer I认证学习指南(Exam 1Z0-803)》是一本专门为准备Oracle Certified Associate(OCA)Java SE 7 Programmer I考试的考生设计的教材。该认证是Java开发人员入门级别的资格证书,旨在验证候选...
### Java SE7 API中文文档-类库查询 #### 概述 本文档旨在提供Java SE7版本中的API中文文档及类库查询指南。这是一份详尽的技术文档,旨在帮助开发者更好地理解和应用Java标准版(Java SE)7中的各类API接口、类与...
自1999年第二版发布以来,历经十余年,《Java虚拟机规范》在2011年7月迎来了针对Java SE7的重大更新,标志着JVM发展的重要里程碑。 #### 二、重要性 ##### 1. 统一性与兼容性 《Java虚拟机规范》作为一份契约文档...
这本书包含了Java SE 7版本的JVM规范,这是Java发展历史上的一个重要里程碑,引入了许多新的特性和改进。 Java虚拟机规范定义了JVM的架构、指令集、内存模型以及类加载机制等核心概念。在SE7版本中,JVM引入了若干...
Java Virtual Machine Specification Java SE 7 中文版 Java Virtual Machine Specification Java SE 7 中文版 Java虚拟机规范SE7
Java SE 7 API文档。jdk7 API文档。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向...
Java核心技术每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了部分内容,以便适应Java的最新特性,反映了Java标准版(Java SE7)的特性,仍然将读者群定位在那些打算将Java应用到实际工程...
《Java编程语言英文第四版》是由Java之父James Gosling与Ken Arnold和David Holmes共同编写的权威教程,针对中高级开发者,旨在深入介绍Java SE7语言及其核心库。这本书是全球开发者快速掌握Java编程语言、理解其...
新版做了全面更新,体现了Java SE7的变化,并将对Java SE 7新特性的完整描述融入对Java基本概念的精辟阐述中。 Java核心技术卷II:高级特性(第9版英文版)(上、下册)专为做实际项目的程序员编写,是一本真实可信、...
https://pan.baidu.com/s/1kO1Ng7HW_3I2Us8SpBoesw Java虚拟机规范
《Java虚拟机规范(Java SE7版)》由林德霍尔姆著,本书完整而准确地阐释了Java虚拟机各方面的细节,围绕.Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而...
同时,由于基于 Bootstrap,Se7en Bootstrap 也继承了其响应式布局特性,能确保在不同设备和屏幕尺寸上都能良好地展示。 在压缩包中的 "Se7en" 文件可能包含了以下内容: 1. CSS 文件:通常命名为 `se7en.css` 或...