欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    sajava的特性和构造.ppt

    • 资源ID:6524242       资源大小:292.49KB        全文页数:80页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    sajava的特性和构造.ppt

    第2章 java的特性和构造,I/O与异常处理标识符的作用域实例成员和类成员数组用法String和StringBuffer类类型转换,一、I/O与异常处理,/程序Lowercase.javaimport java.io.IOException;class Lowercasepublic static void main(String args)throws IOExceptonint i;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,构建文件流对象FileInputStream myin=new FileInputStream(“mydata”);FileOutputStream myout=new FileOutputStream(“myresult”);读写字节public int read()throws IOExceptionpublic void write(int c)throws IOException,错误和异常处理,显示错误消息使用Systemerr对象发送错误消息,消息可以立即出现在显示屏上,而不必缓冲,if(args.length!=2)System.err.println(“.”);System.exit(1);,异常处理,The basic philosophy of Java is that“badly formed code will not be run”The ideal time to catch an error is at compile-time,before you even try to run the program.However,not all errors can be detected at compile-time,the rest of the problems must be handled at run-time.,Error and Exception,Error:It neednt be handled by yourself.The word“exception”is meant in the sense of“I take exception to that”,java.lang Class Throwable|+-java.lang.Throwable All Implemented Interfaces:Serializable Direct Known Subclasses: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(ExceptionName1 e)异常处理程序catch(ExceptionName2 e)异常处理程序.finally.,try捕获例外的第一步是用try选定捕获例外的范围,由try所限定的代码块中的语句在执行过程中可能会生成例外对象并抛弃。,catch每个try代码块可以伴随一个或多个catch语句,用于处理try代码块中所生成的例外事件。catch语句只需要一个形式参数指明它所能够捕获的例外类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的例外对象传递给catch块.在catch块中是对例外对象进行处理的代码,与访问其它对象一样,可以访问一个例外对象的变量或调用它的方法。getMessage()是类Throwable所提供的方法,用来得到有关异常事件的信息,类Throwable还提供了方法printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。,try.catch(FileNotFoundException e)System.out.println(e);System.out.println(message:+e.getMessage();e.printStackTrace(System.out);catch(IOException e)System.out.println(e);,catch语句的顺序,捕获例外的顺序和不同catch语句的顺序有关,当捕获到一个例外时,剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的例外,然后再逐渐一般化。也就是一般先安排子类,再安排父类。,finally捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。,try int b=0;System.out.println(5/b);catch(ArithmeticException e)finallyif(fis!=null)System.out.println(“closingFileInputStream”);elseSystem.out.println(“FileInputStream not open”);,声明抛弃例外,如果在一个方法中生成了一个例外,但是这一方法并不确切地知道该如何对这一异常事件进行处理,这时,一个方法就应该声明抛弃例外,使得例外对象可以从调用栈向后传播,直到有合适的方法捕获它为止。,声明抛弃例外是在一个方法声明中的throws子句中指明的。例如:public int read()throws IOException.throws子句中同时可以指明多个例外,说明该方法将不对这些例外进行处理,而是声明抛弃它们:public static void main(String args)throwsIOException,IndexOutOfBoundsException,抛弃例外首先要生成例外对象,例外或者由虚拟机生成,或者由某些类的实例生成,也可以在程序中生成。生成例外对象是通过throw语句实现的。IOException e=new IOException();throw e;可以抛弃的例外必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误:throw new String(want to throw);,例外类的使用,自定义例外类必须是Throwable的直接或间接子类一个方法所声明抛弃的例外是作为这个方法与外界交互的一部分而存在的。方法的调用者必须了解这些例外,并确定如何正确的处理他们。,FileInputStream 的APIpublic FileInputStream(String name)throws FileNotFoundException,积极处理方式:,import java.io.*;class ExceptionDemo1public static void main(String args)try FileInputStream fis=newFileInputStream(text);catch(FileNotFoundException e),消极处理方式:,import java.io.*;class ExceptionDemo1public static void main(String args)throws FileNotFoundExceptionFileInputStream fis=newFileInputStream(text);,例外类的使用,如果采用消极处理方式,则由调用该方法的方法进行处理;但是调用该方法的方法也可以采用消极和积极两种处理方式,一直传递到Java运行环境.,例外类的使用,运行时例外则表示由运行时系统所检测到的程序设计问题或者API的使用不当问题,它可能在程序的任何地方出现:(1)对于运行时例外,如果不能预测它何时发生,程序可以不做处理,而是让Java虚拟机去处理它。(2)如果程序可以预知运行时例外可能发生的地点和时间,则应该在程序中进行处理,而不应简单的把它交给运行时系统。,(3)在自定义例外类时,如果它所对应的异常事件通常总是在运行时产生的,而且不容易预测它将在何时、何处发生,则可以把它定义为运行时例外,否则应定义为非运行时例外。,标识符的作用域,标识符用来引用在java程序中声明的类、方法、子段、参数、变量和标签等。可以将同一个标识符用作同一个类中的方法名称和子段名称,而不会发生冲突。在不同的作用域中,拼写相同的标识符是截然不同的。,作用域有:局部作用域方法作用域类作用域文件作用域程序包作用域主机作用域,内部的作用域标识符可以隐藏同名的外部作用域标识符。例:double i=1.5;for(int i=0;i 5;i+)System.out.println(i);System.out.println(i);,类具有自己的作用域。字段和方法成员包含在类作用域中。类作用域是全局的。例:BankAccount.java对象成员的标识符将其置于特定的类作用域的方法。例:susan.balance();sally.deposit(11.79),主机对象引用:this this是对任何实例方法中的主机对象的引用。在实例方法中通常通过引用this来访问主机对象中的成员。例:BankAccount.java public void deposit(double amt)if(amt 0)acct_bal+=amt;,this.acct_bal+=amt;,实例成员和类范围成员,如例Vector2D.java实例成员通常使用obj.member符号通过实例成员的主机对象来访问实例成员。类范围成员的存在与任何实例都无关。通过Classname.member表示法来访问类范围成员。类方法没有主机对象,不依赖类中任何实例工作。,使用类方法有一点要特别注意的,那就是在类方法中只能使用类字段与类方法,也就是只能使用static修饰的字段与方法,而不能使用其余的实例变量。如果要用的话,就需用对象.数据的方式。这一点是写Java程序常犯的毛病。,静态字段的初始化,/Rand.java class Rand public static int rn=new int8;statciRandom gen=new Random();for(int i=0;i rn.length;i+)rni=Math.abs(gen.nextInt();public static void main(String args)for(int i=0;i rn.length;i+)System.out.println(“rn”+i+“=”+rni);,类字段再加上fianl修饰符,表示此类字段不能再被更动,这个字段就算是一个常数(constant)。惯例上,此字段的命名常用大写字母。例:public static final float PI=3.1416f,String 和StringBuffer,String类的构造方法,字符串令牌(StringTokenizer)字符串缓冲区(StringBuffer),见doc文档,二维数组的使用,二维数组的声明和创建 int a=1,2,3,4,5,6,7,8;double b=2.5,3.5,4.5,null;b=new double47;,注意和c+中的区别:int a4=1,2,3,4,5,6,7,8;,问:int a=1,2,3,5,6,7,8;,/Matrix.java,class Matrix private double mat;private int nr,nc;public Matrix(int r,int c)if(r 0,public double getElement(int i,int j)return matij;public void setElement(int i,int j,double e)matij=e;public int rows()return nr;public int cols()return nc;public Matrix times(Matrix b)if(nc!=b.nr)return null;Matrix p=new Matrix(nr,b.nc);for(int i=0;i nr;i+)for(int j=0;j b.nc;j+)p.setElement(i,j,rowTimesCol(i,b.mat,j);return p;,private double rowTimesCol(int ri,double b,int ci)/主矩阵的第i行乘以矩阵b 的第j列double sum=0.0;double row=mat ri;for(int k=0;k b.length;k+)sum+=rowk*bkci;return sum;,public String toString()StringBuffer buf=new StringBuffer();for(int i=0;i nr;i+)buf.append(“(“);for(int j=0;j nc-1;j+)buf.append(matij);buf.append(“”);buf.append(matinc-1);buf.append(“)n”);buf.setLength(buf.length()1);return new String(buf);,public static void main(String args)double a=1.0,-2.0,1.5,1.0,2.4,3.1;double b=9.0,0.7,-2.0,30.5,-9.0,4.0;Matrix m1=new Matrix(a);Matrix m2=new Matrix(b);Matrix prod=m1.times(m2);System.out.println(prod);/end the class,类型转换,整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级;,整型,位,byte,(8),char,(16),short,(16),放大,缩小,int,(32),float,long,(64),double,自动类型转换,byte、short、char int intbyte、short、char、int long longbyte、short、char、int、long float floatbyte、short、char、int、long、float double double,操作数1类型,操作数2类型,转换后的类型,强制类型转换,高级类型数据要转换到低级数据类型需用到强制类型转换。如:int i;byte b;b=(byte)i;/*把int型变量i强制转换为byte型*/,小结,异常处理命名空间实例成员和类成员String和StringBuffer,作业,复习问题:2,5,11,顶点类Vector2D.java,public class Vector2Dprivate static float delta=0.00000001f;private float x,y;public Vector2D()public Vector2D(float a,float b)x=a;y=b;public boolean equals(Vector2D v)return x=v.x,public boolean nonzero()return x!=0.0f|y!=0.0f;public float inner(Verctor2D a)return x*a.x+y*a.y;public Vector2D minus(Vector2D a)Vector2D tmp=new Vector2D();tmp.x=x a.x;tmp.y=y a.y;return tmp;,public boolean isPerpendicular(Vector2D b)return(nonzero(),/BankAccount.java/,public class BankAccountpublic BankAccount(int id,String ss,double amt)/构造函数acct_no=id;owner=ss;acct_bal=(amt 0)?Amt:0.0;,public double balance()return acct_bal;public void deposit(double amt)if(amt 0)acct_bal+=amt;,public boolean withdraw(double amt)if(amt acct_bal)return false;acct_bal-=amt;return true;public int id()return acct_no;,public String owner()return ower;private int acct_no;private String owner;private double acct_bal;,

    注意事项

    本文(sajava的特性和构造.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开