浅析JDK7中的语法改进

来源 :中小企业管理与科技·上旬刊 | 被引量 : 0次 | 上传用户:zpbaqq1314
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:JDK是Java Development Kit的缩写,包括Java语言的运行环境、工具和基础类库,是使用最为广泛的Java SDK。JDK的每次升级都会带来一些激动人心的改进,主要体现在语法、类库和性能三个方面。文章从语法角度介绍即将发布的JDK7中引进的新特性,同时给出具体代码,为新版本的编码过程提供依据。
  关键词:二进制 字面量下划线 精准捕获 泛型推断 语法改进
  JDK7即将发布,相对以前的版本,它做出了很多改进。就语法方面,现在可以使用更加高效、安全的方式书写代码,以下分别从6个方面介绍这些变化。
  1 二进制字面量
  十进制是人在日常活动中最普遍使用的数制,可以方便地使用手指计数。在程序开发领域,十进制存在不能直观体现量和含义之间关系的缺点,Java语言引进八进制和十六进制字面量,分别以“0”和“0x”作为前缀。在这次版本更新中,整数字面量第一次允许以二进制形式出现,它以“0b”作为字面量前缀,适合用在需要开关功能的场合。请浏览以下代码,可以清晰地定义出文件访问权限。
  byte readable=0b00000001;
  byte writable=0b00000010;
  byte listable=0b00000100;
  2 数字字面量下划线
  较长的数字在书写过程中容易漏写或多写且不易察觉,可读性也不高。数字字面量下划线可以辅助解决上述问题。请比较以下两行代码,分别定义了我国2010年和2011年人口普查结果。
  int number2010=1339724852;
  int number2011=13_7053_6875;
  下划线的语法要求是,它的两端必须是数字或下划线。请浏览以下代码,前两行会造成编译失败,最后一行虽然能够通过编译,但可读性较差。
  double illegalVelocity1=_299792.458;
  double illegalVelocity2=299792._458;
  double illegibleVelocity=299792.4____58;
  3 接受字符串的开关语句
  使用switch-case语句代替if-else语句可以提高程序的可读性。在以前的版本中,switch-case语句只接受整数类型和枚举,很多开发人员和学者要求支持字符串,这在新版本中成为可能。请分析以下代码,如果使用if-else语句将会非常麻烦。
  String month="February";
  switch(month){
  case "January":
  case "February":
  //另外10个case语句
  }
  4 泛型推断
  JDK5中增加的泛型元素,是Java语言类型安全的一次重大改进。虽然使用泛型可以在一定程度上优雅地实现了类型安全,但也有一个小小的不足——在多数情况下会造成冗余代码。需要指出的是,泛型支持几乎完全在编译器上实现,编译后字节码不包含泛型信息。那么,为什么不增强编译器去除冗余代码呢?请观察以下两行代码,它们均可以在JDK7中通过编译。
  List list1=new ArrayList();
  List list2=new ArrayList<>();
  5 自动资源管理
  资源在使用完后必须显式关闭,这是程序设计的一个常识。在Java语言中,以上过程通常使用close方法实现,并且需要使用try-catch-finally语句结构处理异常。请浏览以下典型代码,实现了文件輸入流的建立、使用和关闭。
  InputStream is=null;
  try{
  is=new FileInputStream("filename");
  is.read();
  }catch(IOException e){
  throw e;
  }finally{
  if(is!=null){
  is.close();
  }
  }
  这段代码最著名的问题是开发人员经常会以错误的方式实现它;其次,与所完成的任务相比,代码量非常大;最后,多数情况下引用pos在最后一个语句块关闭时已经没有使用价值,但随后的代码还可以访问它。为了解决这些问题,JDK7中引入自动资源管理,可以代替开发人员关闭对象。请浏览以下代码,它实现了相同的功能。
  try(InputStream in=new FileInputStream("filename")){
  in.read();
  }
  6 更简洁的捕获
  部分代码会产生多种异常,需要使用多个cache捕获,JDK7中引入了两种方法简化捕获代码。请浏览以下两段cache语句,它们处理反射过程中产生的多种异常,实现相同的效果。
  catch(final ClassNotFoundException|
  InstantiationException|
  NoSuchMethodException|
  InvocationTargetException e){
  throw e;
  }
  cache(final ReflectiveOperationException e){
  throw e;
  }
  以上两段代码均向上层重新抛出异常,需要指出的是,异常对象e不可重新赋值;第二个cache语句中的ReflectiveOperationException异常类是前四个异常类的父类,但在上层只需要处理实际抛出的异常,这是由于JDK7可以精准地判断异常类型。
  7 结语
  文中介绍的改进无疑会产生更加优雅的Java代码,既增加了可读性和安全性,又减少了代码量。JDK7的改进并不止于此,它还实现了模块化、引入Lambda表达式以及文件系统API等。作为开发人员,必须时刻了解语言和开发工具的最新动态,持续提高自身的业务能力。
  参考文献:
  [1]马朝晖,陈美红.Java语言导学[M].北京:机械工业出版社.2003,1.
  [2]陈昊鹏.Java编程思想.北京:机械工业出版社[M].2007,6.
其他文献
班主任是沟通学校与学生、家长的桥梁和纽带,是贯彻落实学校各项工作任务的基础。一个学校办学水平的高低,各项工作的好坏,很大程度上取决于班主任工作的优劣。班主任就是学
1980年,第一辆奥迪quattro在日内瓦的亮相标志着quattro 全时四轮驱动技术的诞生,同时揭开了民用四驱轿车历史的新篇章。
如今,越来越多的企业认为,以网络化、知识化、全球化为主要特征的新经济已是不可逆转的趋势,电子商务化已成为企业发展的必由之路.企业电子商务化过程中,要分析自己产品的生
近日,专业养车服务平台车易安正式上线,同时还发布了沪上首本《完全养车手册》,这意味着车主养车又多了一个新的选择。据悉,到2012年底,车易安将在上海地区招募500家优质汽车服务
本文系统介绍了磺化法生产苯酚二氧化硫酸化工艺.
本文主要介绍进口生产中转速监控系统的原理、仪表选型及应用.
1机电管理工作方面存在的问题1.1改制措施不到位,消弱了机电管理力度1998年乌达矿业公司改制,随着动力处建制的撤消,原隶属动力处分管的业务随即取消,相对应各矿、厂机电科的
摘要:以典型的工作任务为基础、以工作过程为导向改革传统的电子信息专业教学计划,调查专业的核心岗位群,提炼典型工作任务,进行学习领域及学习情境的设计。实施基于工作过程导向整合的教学计划后,促进了学生对原有知识体系的理解,取得比传统教学模式更好的效果。  关键词:工作过程 电子信息 教学计划  0 引言  电子信息专业课程多、课程内容抽象、技术发展快,目前高职院校电子信息专业的课程体系基本都是以事实性
本科合格评估要求基础化学实验室进行开放式教学与管理,在开放式实验室管理中培养和发展学生的自我管理能力,激发学生的主人公意识和参与管理意识,从而提高学生学习的积极性