`
xinklabi
  • 浏览: 1590861 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Java SE7新特性之二进制字面量

    博客分类:
  • Java
 
阅读更多

 Java SE 7中, 整数类型(byteshortint以及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,如有不正确的地方,敬请指正,谢谢!
 
0
分享到:
评论

相关推荐

    java虚拟机规范 Java SE7

    Java SE7版本引入了许多新特性,增强了平台的效率和可靠性。以下是这个规范中的关键知识点: 1. **类文件结构**:Java源代码被编译成字节码,存储在类文件中。每个类文件包含元数据、方法和字段定义。了解类文件...

    Java SE7 语言规范手册

    Java语言规范是由一群资深的Java开发者撰写的,其中包括James Gosling(Java之父)、Bill Joy、Guy Steele和Gilad Bracha等。这份文档是JSR-000901Java® Language Specification的第七版,即Java SE7版。 **版权...

    java虚拟机规范(java SE7)

    第二章:java虚拟结构(运行时区域内存:寄存器,java虚拟机栈,java堆,方法去,运行时常量池,本地方法栈); 第三章:为java虚拟机编译; 第四章:Class文件格式; 第五章:加载、链接与初始化

    Java虚拟机规范(Java SE7)

    Java虚拟机规范(Java SE7)主要讨论了Java虚拟机(JVM)的规范,其中包括了对JVM的详细描述和操作原理的解释。这份规范文件不仅仅是为那些想要了解Java虚拟机的程序员准备的,对于那些想要深入了解Java语言细节的...

    OCP java SE7 Programmer II Certification Guide

    根据提供的文件信息,“OCP Java SE7 Programmer II Certification Guide”主要针对的是希望获得Oracle Certified Professional (OCP) Java SE7 Programmer II认证的专业人士。本书详细介绍了备考1Z0-804考试所需...

    java7 jdk7+jre7 64位

    4. **二进制字面量和下划线分隔数字**:可以使用二进制前缀`0b`表示二进制数,数字间可以用下划线提高可读性。 5. **Try-with-resources**:自动关闭资源的机制,保证资源(如文件流)在使用完毕后会被正确关闭,...

    OCA Java SE7 Programmer I认证学习指南(Exam 1Z0-803).rar

    《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 SE7版本中的API中文文档及类库查询指南。这是一份详尽的技术文档,旨在帮助开发者更好地理解和应用Java标准版(Java SE)7中的各类API接口、类与...

    Java虚拟机规范 SE7

    自1999年第二版发布以来,历经十余年,《Java虚拟机规范》在2011年7月迎来了针对Java SE7的重大更新,标志着JVM发展的重要里程碑。 #### 二、重要性 ##### 1. 统一性与兼容性 《Java虚拟机规范》作为一份契约文档...

    java虚拟机规范SE7

    这本书包含了Java SE 7版本的JVM规范,这是Java发展历史上的一个重要里程碑,引入了许多新的特性和改进。 Java虚拟机规范定义了JVM的架构、指令集、内存模型以及类加载机制等核心概念。在SE7版本中,JVM引入了若干...

    Java虚拟机规范SE7

    Java Virtual Machine Specification Java SE 7 中文版 Java Virtual Machine Specification Java SE 7 中文版 Java虚拟机规范SE7

    Java SE 7 API文档

    Java SE 7 API文档。jdk7 API文档。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向...

    JAVA核心课程 基础讲解 Java类库 应用程序编程接口

    Java核心技术每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了部分内容,以便适应Java的最新特性,反映了Java标准版(Java SE7)的特性,仍然将读者群定位在那些打算将Java应用到实际工程...

    java编程语言英文第四版

    《Java编程语言英文第四版》是由Java之父James Gosling与Ken Arnold和David Holmes共同编写的权威教程,针对中高级开发者,旨在深入介绍Java SE7语言及其核心库。这本书是全球开发者快速掌握Java编程语言、理解其...

    java核心技术·卷II·高级特征(第9版·英文版)及源码

    新版做了全面更新,体现了Java SE7的变化,并将对Java SE 7新特性的完整描述融入对Java基本概念的精辟阐述中。  Java核心技术卷II:高级特性(第9版英文版)(上、下册)专为做实际项目的程序员编写,是一本真实可信、...

    Java虚拟机规范SE7.txt

    https://pan.baidu.com/s/1kO1Ng7HW_3I2Us8SpBoesw Java虚拟机规范

    Java虚拟机规范 (Java SE 7 中文版)

    《Java虚拟机规范(Java SE7版)》由林德霍尔姆著,本书完整而准确地阐释了Java虚拟机各方面的细节,围绕.Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而...

    Se7en Bootstrap ios7风格

    同时,由于基于 Bootstrap,Se7en Bootstrap 也继承了其响应式布局特性,能确保在不同设备和屏幕尺寸上都能良好地展示。 在压缩包中的 "Se7en" 文件可能包含了以下内容: 1. CSS 文件:通常命名为 `se7en.css` 或...

Global site tag (gtag.js) - Google Analytics