sajava的特性和构造.ppt

上传人:tia****nde 文档编号:12707433 上传时间:2020-05-14 格式:PPT 页数:80 大小:201.50KB
返回 下载 相关 举报
sajava的特性和构造.ppt_第1页
第1页 / 共80页
sajava的特性和构造.ppt_第2页
第2页 / 共80页
sajava的特性和构造.ppt_第3页
第3页 / 共80页
点击查看更多>>
资源描述
第2章java的特性和构造,I/O与异常处理标识符的作用域实例成员和类成员数组用法String和StringBuffer类类型转换,一、I/O与异常处理,/程序Lowercase.javaimportjava.io.IOException;classLowercasepublicstaticvoidmain(Stringargs)throwsIOExceptoninti;while(i=System.in.read()!=-1)i=Character.toLowerCase(char)i);System.out.write(I);,接受从键盘输入的方法,System.in.read()读取一个字符并返回该字符的正整数代码或返回-1。System.out.write(i)输出i的低位字节,文件I/O,构建文件流对象FileInputStreammyin=newFileInputStream(“mydata”);FileOutputStreammyout=newFileOutputStream(“myresult”);读写字节publicintread()throwsIOExceptionpublicvoidwrite(intc)throwsIOException,错误和异常处理,显示错误消息使用Systemerr对象发送错误消息,消息可以立即出现在显示屏上,而不必缓冲,if(args.length!=2)System.err.println(“.”);System.exit(1);,异常处理,ThebasicphilosophyofJavaisthat“badlyformedcodewillnotberun”Theidealtimetocatchanerrorisatcompile-time,beforeyoueventrytoruntheprogram.However,notallerrorscanbedetectedatcompile-time,therestoftheproblemsmustbehandledatrun-time.,ErrorandException,Error:Itneedntbehandledbyyourself.Theword“exception”ismeantinthesenseof“Itakeexceptiontothat”,java.langClassThrowablejava.lang.Object|+-java.lang.ThrowableAllImplementedInterfaces:SerializableDirectKnownSubclasses:Error,Exception,Error动态链接失败,虚拟机错误等,通常Java程序不应该捕获这类例外,也不会抛弃这种例外。Exception运行时例外继承于RuntimeException。Java编译器允许程序不对它们做出处理。非运行时例外除了运行时例外之外的其他由Exception继承来的例外类。Java编译器要求程序必须捕获或者声明抛弃这种例外。,Throwable,Error,Exception,RuntimeExcepion,IOException,AWTException,ArithmeticException,IndexOutOfBounds,FileNotFoundException,EOFException,.,.,例外处理机制,在Java程序的执行过程中,如果出现了异常事件,就会生成一个例外对象。生成的例外对象将传递给Java运行时系统,这一例外的产生和提交过程称为抛弃(throw)例外。,例外处理机制,当Java运行时系统得到一个例外对象时,它将会寻找处理这一例外的代码。找到能够处理这种类型的例外的方法后,运行时系统把当前例外对象交给这个方法进行处理,这一过程称为捕获(catch)例外。如果Java运行时系统找不到可以捕获例外的方法,则运行时系统将终止,相应的Java程序也将退出。,例外处理方法,捕获例外声明抛弃例外,捕获例外,捕获例外是通过try-catch-finally语句实现的try.catch(ExceptionName1e)异常处理程序catch(ExceptionName2e)异常处理程序.finally.,try捕获例外的第一步是用try选定捕获例外的范围,由try所限定的代码块中的语句在执行过程中可能会生成例外对象并抛弃。,catch每个try代码块可以伴随一个或多个catch语句,用于处理try代码块中所生成的例外事件。catch语句只需要一个形式参数指明它所能够捕获的例外类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的例外对象传递给catch块.在catch块中是对例外对象进行处理的代码,与访问其它对象一样,可以访问一个例外对象的变量或调用它的方法。getMessage()是类Throwable所提供的方法,用来得到有关异常事件的信息,类Throwable还提供了方法printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。,try.catch(FileNotFoundExceptione)System.out.println(e);System.out.println(message:+e.getMessage();e.printStackTrace(System.out);catch(IOExceptione)System.out.println(e);,catch语句的顺序,捕获例外的顺序和不同catch语句的顺序有关,当捕获到一个例外时,剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的例外,然后再逐渐一般化。也就是一般先安排子类,再安排父类。,finally捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。,tryintb=0;System.out.println(5/b);catch(ArithmeticExceptione)finallyif(fis!=null)System.out.println(“closingFileInputStream”);elseSystem.out.println(“FileInputStreamnotopen”);,声明抛弃例外,如果在一个方法中生成了一个例外,但是这一方法并不确切地知道该如何对这一异常事件进行处理,这时,一个方法就应该声明抛弃例外,使得例外对象可以从调用栈向后传播,直到有合适的方法捕获它为止。,声明抛弃例外是在一个方法声明中的throws子句中指明的。例如:publicintread()throwsIOException.throws子句中同时可以指明多个例外,说明该方法将不对这些例外进行处理,而是声明抛弃它们:publicstaticvoidmain(Stringargs)throwsIOException,IndexOutOfBoundsException,抛弃例外首先要生成例外对象,例外或者由虚拟机生成,或者由某些类的实例生成,也可以在程序中生成。生成例外对象是通过throw语句实现的。IOExceptione=newIOException();throwe;可以抛弃的例外必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误:thrownewString(wanttothrow);,例外类的使用,自定义例外类必须是Throwable的直接或间接子类一个方法所声明抛弃的例外是作为这个方法与外界交互的一部分而存在的。方法的调用者必须了解这些例外,并确定如何正确的处理他们。,FileInputStream的APIpublicFileInputStream(Stringname)throwsFileNotFoundException,积极处理方式:,importjava.io.*;classExceptionDemo1publicstaticvoidmain(Stringargs)tryFileInputStreamfis=newFileInputStream(text);catch(FileNotFoundExceptione),消极处理方式:,importjava.io.*;classExceptionDemo1publicstaticvoidmain(Stringargs)throwsFileNotFoundExceptionFileInputStreamfis=newFileInputStream(text);,例外类的使用,如果采用消极处理方式,则由调用该方法的方法进行处理;但是调用该方法的方法也可以采用消极和积极两种处理方式,一直传递到Java运行环境.,例外类的使用,运行时例外则表示由运行时系统所检测到的程序设计问题或者API的使用不当问题,它可能在程序的任何地方出现:(1)对于运行时例外,如果不能预测它何时发生,程序可以不做处理,而是让Java虚拟机去处理它。(2)如果程序可以预知运行时例外可能发生的地点和时间,则应该在程序中进行处理,而不应简单的把它交给运行时系统。,(3)在自定义例外类时,如果它所对应的异常事件通常总是在运行时产生的,而且不容易预测它将在何时、何处发生,则可以把它定义为运行时例外,否则应定义为非运行时例外。,标识符的作用域,标识符用来引用在java程序中声明的类、方法、子段、参数、变量和标签等。可以将同一个标识符用作同一个类中的方法名称和子段名称,而不会发生冲突。在不同的作用域中,拼写相同的标识符是截然不同的。,作用域有:局部作用域方法作用域类作用域文件作用域程序包作用域主机作用域,内部的作用域标识符可以隐藏同名的外部作用域标识符。例:doublei=1.5;for(inti=0;i0)acct_bal+=amt;,this.acct_bal+=amt;,实例成员和类范围成员,如例Vector2D.java实例成员通常使用obj.member符号通过实例成员的主机对象来访问实例成员。类范围成员的存在与任何实例都无关。通过Classname.member表示法来访问类范围成员。类方法没有主机对象,不依赖类中任何实例工作。,使用类方法有一点要特别注意的,那就是在类方法中只能使用类字段与类方法,也就是只能使用static修饰的字段与方法,而不能使用其余的实例变量。如果要用的话,就需用对象.数据的方式。这一点是写Java程序常犯的毛病。,静态字段的初始化,/Rand.javaclassRandpublicstaticintrn=newint8;statciRandomgen=newRandom();for(inti=0;irn.length;i+)rni=Math.abs(gen.nextInt();publicstaticvoidmain(Stringargs)for(inti=0;i0,publicdoublegetElement(inti,intj)returnmatij;publicvoidsetElement(inti,intj,doublee)matij=e;publicintrows()returnnr;publicintcols()returnnc;publicMatrixtimes(Matrixb)if(nc!=b.nr)returnnull;Matrixp=newMatrix(nr,b.nc);for(inti=0;inr;i+)for(intj=0;jb.nc;j+)p.setElement(i,j,rowTimesCol(i,b.mat,j);returnp;,privatedoublerowTimesCol(intri,doubleb,intci)/主矩阵的第i行乘以矩阵b的第j列doublesum=0.0;doublerow=matri;for(intk=0;kb.length;k+)sum+=rowk*bkci;returnsum;,publicStringtoString()StringBufferbuf=newStringBuffer();for(inti=0;i0)acct_bal+=amt;,publicbooleanwithdraw(doubleamt)if(amtacct_bal)returnfalse;acct_bal-=amt;returntrue;publicintid()returnacct_no;,publicStringowner()returnower;privateintacct_no;privateStringowner;privatedoubleacct_bal;,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!