JDK 7探秘系列(一):新的语言特性
来源:互联网 发布:手机优化软件排名第一 编辑:程序博客网 时间:2024/04/26 17:31
二进制字面量
Java从C/C++继承了用十进制(63),十六进制(0x3f)和八进制符号表示整型字面量,JDK 7也允许你增加0B或0b前缀用二进制符号表示整型字面量,如:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->int x = 0b10101111;
System.out.printf ("%d%n", x);// Output: 175
转换为二进制
java.util.Formatter类中的System.out.printf()方法提供了格式转换功能,你可以使用它将一个整数转换成十进制,十六进制和八进制符号,但它(仍然)不支持转换成二进制,必须借助整数的toBinaryString()方法进行转换:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->System.out.printf ("%s%n", Integer.toBinaryString (78));
这段代码将输出1001110,如果你希望Integer.toBinaryString()的输出结果包括首位的0(这在匹配列中二进制数字时非常有用),但不幸的是,这个方法不能满足你的愿望,必须再寻找另外的办法。
你可能会疑惑为什么二进制字面量怎么会包含在JDK 7中,据这个特性的创始人Derek Foster讲,使用按位运算的代码更具可读性,更容易验证使用二进制数字指定常量的技术规范,他同时指出,从心理上讲,从二进制转换成十六进制容易犯错。
当然,你也可以依赖整数的parseInt()方法将二进制数字字符串转换成整数,如Integer.parseInt ("00110011", 2)将返回51,但是,由于下列原因调用这个方法会有问题:
· 这个方法调用比直接使用字面量更冗长,它的调用语法极其凌乱;
· 这个方法调用会带来一定的性能损失;
· 编译器不能内联这个方法调用返回的值,但可以内联一个常量的值;
· 在字符串中检查到错误时,这个方法调用会抛出一个异常,我们在编译时才能捕获这个异常;
· 与二进制字面量不一样,不能使用switch语句的选择器值表示一个方法调用,如case Integer.parseInt ("00001110", 2):这样的语法是不正确的(也很丑陋),而case 0B00001110:这样的语法就是正确的(也易于阅读)。
- JDK 7探秘系列(一):新的语言特性
- JDK的新特性
- JDK 7 新特性
- JDK 6.0的新特性
- JDK 1.7的新特性
- jdk 1.5 的新特性
- JDK 1.5的新特性
- jdk 6 的新特性
- 【Java】JDK的新特性
- JDK版本的新特性
- Open JDK 7 新特性(即JDK 1.8 新特性)
- JDK 8 新特性学习(一) 概览
- JDK 1.8 新特性 ( 一) ---- Lambda表达式
- JDK 7 新特性 - 总览
- JDK 7 新特性 - 总览
- JDK 7 新特性 - 总览
- JDK 7 新特性 - 总览
- JDK 7 新特性 - 总览
- lamp环境安装需要细节步骤(mysql、apache、php等等)
- IE和FireFox中的textarea长度限制
- linux中安装程序出现的问题
- linux下的mysql
- 20111227王英贺工作总结
- JDK 7探秘系列(一):新的语言特性
- Strategy设计模式
- java基础笔记3
- 团队精神
- SVN 版本控制 Setup-Subversion-1.6.5+TortoiseSVN-v1.6.5
- 今天是个特殊的日子
- 程序员的你
- CTS command
- 2011,我和CSDN亲密接触的一年