java中级技术-细细讲述Java技术开发的规则之中级篇_第1页
java中级技术-细细讲述Java技术开发的规则之中级篇_第2页
java中级技术-细细讲述Java技术开发的规则之中级篇_第3页
java中级技术-细细讲述Java技术开发的规则之中级篇_第4页
java中级技术-细细讲述Java技术开发的规则之中级篇_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java中级技术_细细讲述Java技术开发的规则之中级篇本⽂介绍的Java规则的说明分为3个主要级别,中级是平时开发⽤的⽐较多的级别,在今后将陆续写出其他的规则。遵守了这些规则可以提⾼程序的效率、使代码⼜更好的可读性等。(1)在finally⽅法⾥关掉input或者output资源,⽅法体⾥⾯定义了input或者output流的话,需要在finally⾥⾯把它关掉。以下这⼏种调⽤不需要遵守这条规则,因为colse()⽅法不起作⽤:java.io.StringWriterjava.io.ByteArrayOutputStreamjava.io.ByteArrayInputStream如果再⽅法返回的时候没有调⽤close()⽅法来释放input()和output()的资源的话,会导致⼀个系统资源泄漏。⽽且在任何情况下都要确定在返回全调⽤了close()⽅法,包括出现异常的时候。所以需要在finally⽅法⾥⾯加⼊这个⽅法。这样就保证了在任何情况下都会关闭资源。错误⽰例:publicclassCIO{publicvoidmethod(java.io.Filef){java.io.FileInputStreamfis=null;try{fis=newjava.io.FileInputStream(f);fis.read();fis.close();}catch(java.io.FileNotFoundExceptione1){System.out.println("Filenotfound");}catch(java.io.IOExceptione2){System.out.println("I/OException");}//如果出现异常,这⾥就不能保证关闭资源。}}修正后的代码:publicclassCIOFixed{publicvoidmethod(java.io.Filef){java.io.FileInputStreamfis=null;try{fis=newjava.io.FileInputStream(f);fis.read();}catch(java.io.FileNotFoundExceptione1){System.out.println("Filenotfound");}catch(java.io.IOExceptione2){System.out.println("I/OException");}finally{if(fis!=null){try{fis.close();}catch(java.io.IOExceptione){System.out.println("I/OException");}}}}}(2)else的注意问题⼀般总认为如果if语句只有⼀句的话,那么{}就是可要可不要的了。可是如果if有else嵌套的话,就不⼀样了,{}是必需的错误⽰例:if(i<5)if(i<2)i++;elsei--;修改后:if(i<5){if(i<2)i++;}else{i--;}(3)不要再catch()块⾥什么代码也不放在catch()块⾥⾯放⼊⼀些错误处理代码是⼀个好的习惯。但是如果catch()⾥⾯有有关javadoc的代码,那也是可以的。错误⽰例:try{System.in.read();}catch(java.io.IOExceptione){//错误}正确:try{System.in.read();}catch(java.io.IOExceptione){System.out.println("Descriptiveerror");}(4)不要在if条件⾥⾯附值如果这样做的话,系统会报告错误。在java的很多条件声明⾥⾯⽤附值是很不明智的,⽽且系统也会报告错误。很容易引起异常。遵守这条规者能够使维护简单,避免不⼀致。错误⽰例:if(b=true)正确的:if(b==true)(5)for语句需要循环体。如果没有{}的话,for语句只会执⾏⼀次!错误⽰例:for(i=0;i<10;i++);System.out.println(i);这⾥print()只会执⾏⼀次。正确:for(i=0;i<10;i++){//FIXEDSystem.out.println(i);}(5)不要把⽅法定义成main()在java⾥,main()⽅法是⼀个特别的⽅法。所以在⾃⼰定义⽅法的时候不要定义这样的名字,以免引起混扰。(6)不要直接或者间接的定义'Error'和'Throwable'的⼦类'java.lang.Error'只在JVM出现反常的时候覆盖这个⽅法,如果你定义了直接或者不直接的类继承了类'Error',也就指出了这个错误是JVM内部的,⽽不是这个类的。所以对于java编译器来说是不可见的,这样就不能检查错误的异常处理了。'java.lang.Throwable'是'java.lang.Exception'和'java.lang.Error'的上级类,⽤户如果象定义异常类的话应该继承'java.lang.Exception'。错误⽰例:publicclassABCextendsError正确:publicclassABCextendsException(7)有关"switch"语句⾥⾯的"case"问题最好在每⼀个“case”⾥都定义⼀个”return”或者“break”来控制不要⾛到下⾯的“case”⾥去。如果⼀个”case”语句在代码的最后没有⼀个”break”或者”return”句,程序就会⾛到下⼀个”case”。如果这个”case”是最后⼀个的话,那就没什么问题,如果后⾯还有”case”的话,看起来就不太安全了。错误⽰例:switch(i){case1:x=10;break;case2:x=20;default:a=40;break;正确:switch(i){case1:x=10;break;case2://VIOLATIONx=20;break;default:x=40;break;(8)建议不要使⽤'System.getenv()'不建议使⽤'System.getenv()',这个⽅法看起来很好⽤,不过并不是所有的系统都有环境变量的。不⽤这个⽅法也可能带来⼀些不⽅便。错误⽰例:voidmethod(Stringname){System.getenv(name);//可以⽤其他⽅法来代替}如果不⽤这个⽅法,我们可以⽤其它的⽅法来代替。⽐如:'System.getProperty()’,'getTypeName()'等,这也可以找到java的系统属性。(9)不要使⽤’\n’或者'\r'来分⾏这两个标记看来很普遍,特别是’\n’。我们经常⽤来作为分⾏⽤。但是不同的系统⽤不同的分⾏字符,所以这些字符在某些意义上违背了java的平台⽆关性。错误⽰例:System.out.println("Hello\n"+name);我们可以⽤其它的⼀些⽅法来代替,⽐如println(),这个⽅法在不同的系统平台上都起到相同的作⽤。后者推荐⼤家⽤这个⽅法:System.getProperty("line.separator")(10)使所有的内部类"private"Java允许⼀个类包含另外⼀个类,带是Javabytecode没有这个概念。类被编译器解释成package-private类。从更深的程度来说,包含类的任何内部私有对象能被内部类访问的也能被同⼀个包内的其他类访问。错误⽰例:publicclassINNER{classINNER_Class{voidsetValue(inti){_value=i;//现在包就可以访问了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论