本文共 1836 字,大约阅读时间需要 6 分钟。
泰山不拒细壤,故能成其高;江海不择细流,故能就其深。 在昨天的 JavaOne 专题讲座“ JDK 7 中的小改变”中, Sun 的资深软件工程师尤瑟夫提议 Java 7 的新特征应该面向“程序员友好”( Programmer-friendly ),并且应该集中在对 Java 语言的小改变上。其中在整数变量中允许使用二进制值以及 switch 语句允许使用字符串作为表达式的值,就是他提议的两个改变。 在整数型变量,如 byte 、 short 、 int 以及 long 中合法使用二进制值,使得在这个领域中的编程提供了方便。如: byte mask = b0011; // 或者 0b0011 ,十进制值为 3 为了增强可读性,允许使用下划线,而且允许在十进制值中使用下划线。如: int intMask = 0b1100_0011; // 在二进制值中使用下划线 long longMask = 9_223_372_036_854_775_807L; // 在十进制值中使用下划线 尤瑟夫提议的在 Java 7 中第二个小改变是 switch 语句中允许使用字符串作为其表达式的值。在目前使用的所有 Java 版本中, switch 语句的语法格式为: switch (integralExpression) { case integralValue_1 : statements; case integralValue_2 : statements; default: statements; // 可选项 其表达式 integralExpression 的值规定为除 long 之外的整数以及字符,但不允许是字符串。 尤瑟夫对 switch 语句的小改进并没有改变这个语句的语法,只是将字符串也作为 switch 的合法表达式和值。如: String s = someDefinedString; 这种改变的确是小,但给编程带来了方便。这也符合对 integral expression 的定义,即字符串也是一种代码确定的整数值。 由于可以对 Character 、 Byte 、 Short 、 Integer 对象做自动卸箱 (auto-unboxing) ,所以期待中的 Java 7 将对 switch 语句做出如下新定义: switch 语句中表达式的值可以是 char 、 byte 、 short 、 int 、 Character 、 Byte 、 Short 、 Integer 、 String 、 enum 类型;否则将产生编译错误。 例 1 .利用字符串作为 switch 语句的选项值,调用 menu 对象的不同方法。 String menu = myMenu.getMenu(); //getMenu 返回用户选择的菜单 case “open”: myMenu.openFile(); // 调用对象 menu 的方法 case “save”: myMenu.saveFile(); case “exit”: myMenu.exit(); default: System.out.println(" 菜单选项错误 "); 例 2 .利用字符串作为 switch 的选项确定字符串变量 day 的值是否是工作日或者周末休息日。 switch(dayOfWeek) { //dayOfWeek 为定义了的字符串 case “ 周 1 到周五 ” : day = " 工作日 "; case “ 周六到星期天 ” : day = " 周末休息 " ; 完整程序例子和尤瑟夫提议的其他对 Java 7 的小改变,见即将由清华大学出版社出版的《 Java 编程艺术》配套资源下载网页。
据尤瑟夫和其他 Java 7 领衔工程师透露, Java 7 将在今年年底或明年年初正式发表。 本文转自高永强51CTO博客,原文链接: http://blog.51cto.com/yqgao/163115 ,如需转载请自行联系原作者