首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:探秘JDK 7:将会出现新的语言特性

探秘JDK 7:将会出现新的语言特性

www.jz123.cn  2010-06-30   来源:         我要投递新闻

  对JDK 7 的期待

  Java平台最新的主要版本是2006年12月发布的Java SE 6,经过近4年的开发,下一代Java平台将在今年与大家见面,根据OpenJDK功能列表的显示,以下功能将会包含在JDK 7中(最有可能被称为Java SE 7):

  ◆ 并发和集合更新;

  ◆ 椭圆曲线加密技术;

  ◆ 前向移植Java SE 6u10部署特性:Java内核,Quickstarter等;

  ◆ JAXB,JAXP和JAX-WS API升级;

  ◆ 新的语言特性:在任何Java类型上的注解,自动资源管理,二进制字面量,闭包,为模块化编程提供语言和虚拟机支持,switch语句支持字符串,泛型实例类型推断,整型字面量下划线支持等;

  ◆ 为Java SE 6u10图形功能提供了新的平台API:重量级/轻量级组件的混合,半透明和任意形状的窗口;

  ◆ 新的Swing组件:JXDatePicker,JXLayer装饰构件;

  ◆ Swing新的Nimbus外观;

  ◆ NIO.2(新的I/O,第二代);

  ◆ 在Solaris上支持套接字定向协议(Sockets Direct Protocol,SDP)和流控制传输协议(Stream Control Transmission Protocol,SCTP);

  ◆ Unicode 5.1支持;

  ◆ 升级了类加载器架构,包括了一个关闭URLClassLoader的方法;

  ◆ 虚拟机增强:压缩64位对象指针,新的G1垃圾回收器,对非Java语言的支持(InvokeDynamic);

  ◆ 为Java 2D提供的XRender管道。

  除了等待今年晚些时候的JDK 7官方发布,你也可以在其早期版本中尝试其中的一些特性,可以去http://java.sun.com/javase/downloads/ea.jsp下载JDK 7第5个里程碑版本(目前最新的版本)。

  本文将重点介绍语言新特性中的二进制字面量,在switch中使用字符串和整型字面量下划线,我的环境是Windows XP SP3+JDK 7里程碑5版本,本文引用的示例代码可从http://www.informit.com/content/images/art_friesen_exploringjdk1/elementLinks/code.zip打包下载。

  二进制字面量

  Java从C/C++继承了用十进制(63),十六进制(0x3f)和八进制符号表示整型字面量,JDK 7也允许你增加0B或0b前缀用二进制符号表示整型字面量,如:

  int x = 0b10101111; System.out.printf ("%d%n", x); // Output: 175

  转换为二进制

  java.util.Formatter类中的System.out.printf()方法提供了格式转换功能,你可以使用它将一个整数转换成十进制,十六进制和八进制符号,但它(仍然)不支持转换成二进制,必须借助整数的toBinaryString()方法进行转换:

  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:这样的语法就是正确的(也易于阅读)。

上一篇:Java无法编写?通过JNI本地编写来解决 下一篇:用JDOM完成Java更新XML文件的方法

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图