详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp81
从2006到现在等待了多年的jdk7终于发布了.这里将对它的一些新特做一些初步的研究:
jdk7 相对于jdk6主要在以一几个方面有了非常显著的改进的提升:
首先分析其对java语言本身的改进:
二进制表示的支持(Binary Literals)的支持。
在JDK7中可以用二进制的形式表示整形数据(byte,short,int,long),这些整形类数据如果用二制表示则需0b或0B打头。如:
byte aByte=(byte)0b01;
short aShort=(short)0B001;
int aInt=0b01001;
long aLong=0B011101L;
使用二进制表示数据有什么好处呢?我们看一下下面的例字。
示例一:
要求定义一个数组。表示按位旋转(即后个数是前一个数向左旋转一位,请注意是旋转)。用二制可以比较清晰地表示这种数据结构:
public static final int[] phases = {
0b00110001,
0b01100010,
0b11000100,
0b10001001,
0b00010011,
0b00100110,
0b01001100,
0b10011000
}
大家看了上面的定义可以比较快地理解定义的内容。如果用16进制或8进制那可能就比较难理解了。如下:
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;
}
总之,JDK7新增的这种整形的表示方对处理二制的数据操作提供了很好的帮助。
String 可以作为switch的statement,很多编程人员都遇到过通过一个字符串来决定程序流转的问题,以JDK7以前大家得通过一些特殊的处理才能得以实现。如先通过一个转换器将
字符串转换为数字类型。JDK7就不需要做那些转换可以直接将字符串做条件来使用。如下:
public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
}
return typeOfDay;
}
是不是觉得上面的代码很简明?
今天先研究到这里,明天研究JDK7最新的异常处理处理特性.
相关推荐
Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制...
Java SE 6 新特性 HTTP 增强.htm
The Java Virtual Machine Specification(Java SE 7 Edition),Java虚拟机规范(Java SE 7 Edition),chm格式制作,原汁原味,使用方便。
Java SE程序 一个人一本书 程序Java SE程序 一个人一本书 程序Java SE程序 一个人一本书 程序Java SE程序 一个人一本书 程序Java SE程序 一个人一本书 程序Java SE程序 一个人一本书 程序Java SE程序 一个人一本书 ...
JAVA SE 7 programmer 認證
Java SE 6 新特性 资料
java se 7 api chm english so salasala ~~yi ya ~~
Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE...
The Java Language Specification(Java SE 7 Edition),Java语言规范(Java SE 7 Edition),chm格式制作,原汁原味,使用方便。
Java虚拟机规范 (Java SE 7 中文版).pdf
Java虚拟机规范(Java SE 7).pdf
The Java Language Specification Java SE 7 Edition 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
JAVA_SE6 新 特 性
Java SE 6 新特性 编译器 API
Java SE 6 新特性 XML API 与 Web 服务
Java SE 6 新特性 HTTP 增强.doc
Java SE Development Kit 7u5 for Linux x86 tar.gz 2