java se7 变化_Java SE7新特性之二进制字面量
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新特性之二进制字面量相关推荐
- c++语言自定义操作符,C++11新特性之自定义字面量
1.示例 C++11新标准中引入了用户自定义字面量,也叫自定义后缀操作符,即通过实现一个后缀操作符,将申明了该后缀标识的字面量转化为需要的类型.考察如下代码: long double operator ...
- java 8 并行_Java 8新特性之 并行和并行数组(八恶人-8)
Jody Domingre 多莫歌·乔迪 "How you doing, dummy?" 你还好吗,傻瓜 一.基本介绍 Java8不仅增加了Stream,而且还增加了paralle ...
- java 文档比较功能_Java 12 新特性介绍,快来补一补
Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本.在这之前我们已经介绍过其他版本的新特性,如果需要可以点击下面的链接进行阅读. Switch 表达式 (JEP ...
- Java基础:JDK1.5新特性
1. ENUM枚举 1.1 枚举概述 枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例 ...
- Java9发布回顾Java 8的十大新特性
java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...
- [转载] Java9发布回顾Java 8的十大新特性
参考链接: Java中的DoubleStream mapToObj() java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习 ...
- Java EE 8的五大新特性详解
Java EE 8的五大新特性详解 2018.4.3 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. Java EE 8带来了很多新特性,其中最好的新特性有下面五个. 备受期待的Ja ...
- 5分钟学会Java 9~Java11的七大新特性
Java11 发布了,然而很多公司还在用Java 8 ,本文会简要介绍Java 9 -11 引入的新语法和API. 本地变量类型推断 Java 10 就已经引入了新关键词var,该关键词可以在声明局部 ...
- Java 10的10个新特性,将彻底改变你写代码的方式
转载自 Java 10的10个新特性,将彻底改变你写代码的方式 Java 9才发布几个月,很多玩意都没整明白,现在Java 10又要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,J ...
最新文章
- 统计学 计算机论文,统计学专业论文范文
- 51nod 1013【快速幂+逆元】
- ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频
- mysql128位整数_mysql的数据类型
- 加快mysql导入、导出速度
- java中volatile关键字
- 【双100%解法】剑指 Offer 22. 链表中倒数第k个节点
- Scale计算公式 - 关于电压值与二进制数值间的转换
- 一步一步学习Servlet之Cookie使用
- 在Edge浏览器中设置编码方式
- android 音量流类型,android 音量控制setVolumeControlStream
- 线性代数笔记1.1n阶行列式
- Allure趋势图本地显示
- [UIView numberofRowsInSection]unrecognized selector sent to instance 0x1808bef0 错误
- 第三章:密码学基本理论
- Anaconda下载simpleITK包和pytorch包
- 用Unity开发一款2D横版游戏demo
- 数据库的视图(View)
- 红色主题旅游网站/旅游网站
- 一、Glade-3安装配置
热门文章
- 实现Sleep函数的四种方法
- VirtualBox 里安装win7 / win8 不能全屏的解决方法
- RescoPhotoViewer图片查看v5.0_s60v3破解汉化版by八神
- Modem2G/3G/4G/5G:通信领域常见名词缩写释义(VoLTE,CSFB,CA,RAT...)
- 08/14 国富论笔记
- HDU5040Instrusive
- 坑之 Jpa 执行原生SQL 返回映射为对象
- 排序-------简单选择实现(Java实现)
- 第6、7章 Java复习
- mysql经纬度存储格式geometry_MySQL的geometry类型处理经纬度距离的方法介绍