收藏 分销(赏)

Java面向对象程序案例教程课件电子教案.pptx

上传人:a199****6536 文档编号:10251431 上传时间:2025-04-30 格式:PPTX 页数:234 大小:803KB
下载 相关 举报
Java面向对象程序案例教程课件电子教案.pptx_第1页
第1页 / 共234页
Java面向对象程序案例教程课件电子教案.pptx_第2页
第2页 / 共234页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Java,面向对象程序案例教程,第,1,章,Java,概述,第,1,章,Java,概述,Java,是广泛应用的面向对象,编程语言,1.1,Java,语言的特点,1.,跨,平台性,Java,源程序,计算机系统,1,Java,虚拟机,字节码文件,编译,计算机系统,2,Java,虚拟机,1.1,Java,语言的特点,2,.,面向对象,抽象与封装、继承、动态,3.,安全性,4.,多线程,5.,简单易用,1.2 Java,的版本,1996,年,1,月,第一个,JDK-JDK1.0,诞生;,1997,年,2,月,18,日,,JDK1.1,发布;,1998,年,12,月,8,日,,Java 2,企业平台,J2EE,发布;,1999,年,6,月,,SUN,公司发布,Java,三个版本:标准版(,J2SE,)、企业版(,J2EE,)和微型版(,J2ME,);,2000,年,5,月,8,日,,JDK1.3,发布;,2000,年,5,月,29,日,,JDK1.4,发布;,2001,年,9,月,24,日,,J2EE1.3,发布;,2002,年,2,月,26,日,,J2SE1.4,发布,此后,Java,的计算能力有了大幅提升;,1.2 Java,的版本,2004,年,9,月,30,日,,J2SE1.5,发布,成为,Java,语言发展史上的又一里程碑。为了表示该版本的重要性,,J2SE1.5,更名为,Java SE 5.0,;,2006,年,12,月,,SUN,公司发布,JRE6.0,;,2009,年,12,月,,SUN,公司发布,Java EE 6,;,2011,年,7,月,28,日,甲骨文发布,Java SE 7,;,2014,年,3,月,18,日,甲骨文发表,Java SE 8,;,2017,年,9,月,21,日,甲骨文,发表,Java SE 9,。,(,2009,年,4,月,20,日甲骨文收购,SUN,),1.3,搭建,Java,开发环境,1.3.2,配置环境,变量,JAVA_HOME,:,指向,的是,JDK,的安装,路径,,如,C,:Program,FilesJavajdk1.8.0_131,PATH,:,%JAVA_HOME%bin,;,CLASSPATH,:,%,JAVA_HOME,%,libdt.jar,环境变量的设置方法:,右键,点击我的电脑,-,属性,-,高级,-,环境变量,,修改系统,变量,1.4 Eclipse,运行第一个,Java,程序,步骤,1,:创建,工程,(,Project,),事先创建好工作目录(,WorkSpace,),在启动,Eclipse,时,将,WorkSpace,切换到工作目录。,创建,java Project,步骤,2,:创建,包,(可选,不创建包也可以),步骤,3,:,创建,类,(,假设类名为,HelloWorld,),步骤,4,:,输入源程序,步骤,5,:,运行,1.4 Eclipse,运行第一个,Java,程序,Java,程序的运行方式,1,:在右键选中类,HelloWorld,,然后选中,Run AsJava Application.,2,:在菜单中选择,“Run-Run”,3,:点击运行按钮,,,选择,HelloWorld,程序运行后,在控制台窗口输出如下内容:,Hello,面向对象程序设计,4,:在命令行窗口编译运行,编译,Java,程序:,javac HelloWorld.java,运行,Java,程序:,java HelloWorld,1.5 HelloWorld,程序分析,class,public,main(),方法,System.out.println(),方法,提示,:,“,System.out.println(),”可以用下面的方式快捷输入:输入,syso,,然后使用快捷方式,ALT+/,。,第,2,章,Java,语言基础,主要内容,标识符,和,关键字,代码注释,数据类型,常量,和,变量,运算符,与,表达式,控制语句,方法,和方法,重载,2.1,标识符,2.1.1,标识符命名规则,标识符,,是指程序员在定义,java,程序时,自定义的一些名字,。,如,类,名、,变量,名,、,函数名、,包名,等,。,标识符,的基本字母表为:,26,个英文字符大,小写、数字、下划线和,美元符号,($),。,不,能,以,数字开头。,不,能,是,关键字。,区分,大小写。,可以,为任意长度。,2.1,标识符,2.1.2,标识符命名规范,包名:小写字母,类名:每个单词的第一个字母大写,其他字母小写,接口:与类名相同(可在最前加大写字母,I,),。,方法:第一个单词全小写,后面的单词首字母大写,其他小写,属性:,第一个单词全小写,后面的单词首字母大写,其他小写,常量:全使用大写字母,多个单词的用下划线连接,2.1,标识符,2.1.3,Java,语言中的关键字,abstract,assert,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,enum,extends,final,finally,float,for,goto,if,implements,import,instanceof,int,interface,long,native,new,package,private,protected,public,return,strictfp,short,static,super,switch,synchronized,this,throw,throws,transient,try,void,volatile,while,2.2,代码,注释,2.2.1,必须加注释的代码,1.,基本,必加注释,类(接口),构造函数,方法,全局变量,字段,/,属性,2.,特殊,必加注释,典型算法。,代码不明晰处。,代码修改处。,代码循环和逻辑分支组成的代码处。,为他人提供的接口。,2.2,代码,注释,2.2.2,代码注释格式,单行注释:“,/,”,块注释:“,/*.*/,”,文档注释:,/*.*/,,这种,格式是为了便于,javadoc,程序自动,生成,帮助,文档。,在这种注释内部可以使用各种,Javadoc,标记(见下页),注:这部分内容可以在讲完继承与多态再练习,2.2,代码,注释,Javadoc,标记,解释,version,对类的说明 标明该类模块的版本。,since,指定最早出现在哪个版本。,author,对类的说明 标明开发该类模块的作者。,see,对类、属性、方法的说明。,生成参考其他的,JavaDoc,文档的连接,也就是相关主题。,link,生成参考其他的,JavaDoc,文档,它和,see,标记的区别在于,,link,标记能够嵌入到注释语句中,为注释语句中的特殊词汇生成连接。,eg.,link,Hello,deprecated,用来注明被注释的类、变量或方法已经不提倡使用,在将来的版本中有可能被废弃,param,描述方法的参数,是对方法的说明,对方法中某参数的说明。,return,描述方法的返回值,是对方法返回值的说明,throws,描述方法抛出的异常,指明抛出异常的条件,exception,对方法的说明 对方法可能抛出的异常进行说明,2.3,基本数据类型,2.3.1,8,种基本数据类型,类型,位数,数据范围,默认值,1,boolean,1,位,true,和,false,两个值,false,2,byte,8,位,最大存储数据量是,255,,数据范围是,-128127,0,3,char,16,位,存储,Unicode,码,用单引号赋值。,4,short,16,位,最大数据存储量是,65536,,数据范围是,-3276832767,0,5,int,32,位,最大数据存储容量是,2,32,-1,,数据范围是,-2,31,2,31,-1,0,6,long,64,位,最大数据存储容量是,2,64,-1,,数据范围为,-2,63,2,63,-1,0L,7,float,32,位,数据范围在,3.4e-451.4e38,,赋值时须在数字后加上,f,或,F,0.0f,8,double,64,位,据范围在,4.9e-3241.8e308,,赋值时可以加,d,或,D,也可以不加,0.0d,2.3,基本数据类型,2.3.1,8,种基本数据类型,注意:前面表中的默认值指类中的属性,而在方法中定义的变量,如果不赋值就使用会产生错误。,boolean,类型只需要一位就可以,但内存是以字节为单位的,程序中定义一个,boolean,变量需占用一个字节。,Java,为每个基本数据类型都提供一个包装类,利用该类可以获取各基本类型的有关信息。,例,2.1,获取基本数据类型的取值范围,2.3,基本数据类型,注意:整数的八进制、十六进制表示,前缀,0,表示八进制,前缀,0X,表示十六进制。如:,int decimal=100;,int octal=0144,;/,十进制,100,int hexa=0 x64,;/,十进制,100,2.3,基本数据类型,2.3.2,Java,中的常量,常量,可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变,。例如:,final double PI=3.14,;,final char MALE=M,,,FEMALE=F,;,适当使用常量,可提高程序的可读性,有利于程序的维护。,2.3,基本数据类型,2.3.3,转义字符,有些字符具有特殊功能,如双引号用于字符串的开始和结束,单引号用于将字符括起来。如果字符串本身就包括双引号,如,”He said,“Hello”,。如果直接写:,String str=,”He said,“Hello”,”;,就会产生语法错误,因为,”He said,“,已经是一个完整的字符串,后面再接,Hello”,”,,显然不符合要求,。为此,Java,使用转义字符将双引号转换成普通字符。,用“,”表示转义字符,即“,”后面的字符被转义。,2.3,基本数据类型,2.3.3,转义字符,符号,字符含义,a,响铃(,BEL,),n,换行,(LF),,将当前位置移到下一行开头,r,回车,(CR),,将当前位置移到本行开头,f,换页符,(FF),,将当前位置移到下页开头,b,退格,(BS),,将当前位置移到前一列,0,空字符,(0 x20),s,字符串,t,水平制表,(HT),(跳到下一个,TAB,位置),v,垂直制表,(VT),双引号,单引号,反斜杠,ddd,1,到,3,位八进制数所代表的任意字符,xhh,1,到,2,位十六进制所代表的任意字符,uxxxx,16,进制,Unicode,字符,(xxxx),2.3,基本数据类型,2.3.3,转义字符,例如:,String s1=“He,said,“Hello”;,“,”作为转义字符的标志,那如何输出,“,”本身。例如:,String,s2,=,“C:JavasrcHelloWord.java”;,2.3,基本数据类型,例,2.3,转义字符的应用,在这个例子中用到了,String,类的,split(),方法。,split,(),方法用于把一个字符串分割,成子字符串,数组,。参数,是一,个正则表达式,用于指定分隔符。,如,String s=“aaa:bbb:ccc”;,String words=s.split(“:”);,但如果用特殊的字符(如,、,|,、,+,、,*,等在正则表达式中有特殊意义的字符)作为分隔符,就要使用转义自费了。,2.3,基本数据类型,如:,String s=aaa|bbb|ccc;,String words=s.split(,|);,String s=aaa+bbb+ccc;,String words=s.split(,+);,String s=aaa,bbb,ccc;,String words=s.split(,+);,2.4,运算符,2.4.1,算术运算,符,+,、,-,、,*,与数学中的用法一致。,操作符,说明,+,加法,-,相加运算符两侧的值,-,减法,-,左操作数减去右操作数,*,乘法,-,相乘操作符两侧的值,/,除法,-,左操作数除以右操作数,求余或取模,-,左操作数除以右操作数的余数,+,自增,:,操作数的值增加,1,-,自减,:,操作数的值减少,1,2.4,运算符,2.4.1,算术运算,符,除法(,/,):两个整数相除,结果为整数,小数部分被舍去。两个实数相除结果为实数。例如,5/3=1 5.0/3.0=,1.6666666666666667,求余数(,%,):不仅可以求两个整数相除的余数,还可以求两个实数相除的余数。例如:,5.7%1.5=1.2,2.4,运算符,2.4.1,算术运算,符,+,、,-,有前置和后置两种使用方式。运算符前置,先使变量值增减,再使用该变量,运算符后置,,,先使用,该,变量,再将变量,值,增减。例如;,i=10;,j=i,+;/,结果,i=11,j=10,i=10;,k=+i,;,/,结果,i=11,j=11,例,2.4,算数,运算符的使用,2.4,运算符,2.4.2,关系运算符,运算符,描述,=,检查如果两个操作数的值是否相等,如果相等则条件为真。,!=,检查如果两个操作数的值是否相等,如果值不相等则条件为真。,检查左操作数的值是否大于右操作数的值,如果是那么条件为真。,=,检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。,j),System.,out.println(i+,+j+,+k);/,10,20,30,int,i=10,j=20,k=30;,boolean b=(ij),System.,out.println(i+,+j+,+k);/11,20,31,例,2.6,逻辑运算符的短路运算与非短路运算,2.4,运算符,2.4.4,位运算符,操作符,描述,如果相对应位都是,1,,则结果为,1,,否则为,0,|,如果相对应位都是,0,,则结果为,0,,否则为,1,如果相对应位值相同,则结果为,0,,否则为,1,按位补运算符翻转操作数的每一位,即,0,变成,1,,,1,变成,0,。,按位右移运算符。左操作数按位右移右操作数指定的位数。,无符号按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。,注意:无符号的意思是将符号位当作数字位看待。,2.4,运算符,2.4.4,位运算符,例:,19&6 00010011,00000110,00000010,2,例:,19|6 00010011,00000110,00010111,23,例:,19 2 00010011,00,000100,11,4,例:,19 6 00010011,00000110,00010101,21,例:,19 000000 00010011,111111 11101100,:总是补,0,:有的系统补,0,,有些系统补,1,例,2.7,位运算符的使用,2.4,运算符,2.4.5,赋值,运算符,操作符,用法,等价于,=,s=i,s=i,+=,s+=i,s=s+i,-=,s-=i,s=s-i,*=,s*=i,s=s*i,/=,s,/=,i,s=,s,/,i,=,s,=i,s=s%i,=,s=i,s=s=,s=i,s=si,=,s=i,s=si,=,s&=i,s=s&i,=,s=i,s=si,|=,s|=i,s=s|i,注意:,a*=3+6;,相当于,a=a*(3+6);,例,2.8,赋值运算的应用,2.4,运算符,2.4.6,条件,运算符,由,?,和,:,组成,是一个三元运算符,使用格式为:,?,:,例如:,max=,ab,?,a,:,b,;,例,2.9,条件,运算符的使用,2.4,运算符,2.4.7,字符串,加运算符(,+,),将两个字符串连接起来,例,2.10,字符串连接,2.5,控制语句,选择结构语句:,if,语句、,swtch,语句,循环结构语句:,for,语句、,while,语句、,dowhile,语句,continue,语句,break,语句,return,语句,2.5,控制语句,if,语句,三种使用形式,if,(表达式,),方法体,if,(表达式,),方法体,else,方法体,if,(,表达式,1,),方法,体,1,else,if,(,表达式,2,),方法体,else if,(,表达式,n,),方法,体,n,else,方法,体,n+1,2.5.1,选择结构,2.5,控制语句,if,语句,例:,if,(,s60,),System.out.println(“,需要补考,”);,if,(,time=90,),System.out.println,(“,优,”);,else if(,s,=80)/,没必要写,else,if(,s=80,)&(s=70,),System.out.println,(“,中,”);,else,if(s,=60,),System.out.println,(“,及格,”);,else,System.out.println,(“,不及格,”);,2.5.1,选择结构,例,2.11 if,语句的应用,2.5,控制语句,switch(,表达式,),case,常量,1,:,语句,1,break,;/,可选,case,常量,2,:,语句,2,break,;/,可选,case,常量,n,:,语句,n,break;/,可选,default,:/,可选,语句,n+1,2.5.1,选择结构,2.,switch,语句,使用格式,多分支语句,表达式的值与哪个,Case,后面的常量相同就从哪里开始执行,如果没有与表达式相同的常量值,则从,default,后面开始执行,遇到,break,结束,switch,语句。,表达式:整型或字符型,各,常量的值互不相同,default,可以没有,2.5,控制语句,2.5.1,选择结构,2.,switch,语句,例,2.12 switch,语句的使用,。,删除程序中的所有,break,语句,观察运行程序后有什么不同。,int,a=score/10;,switch(a,),为什么不直接使用,switch(,score,),2.5,控制语句,2.5.2,循环结构,1.for,语句,使用格式:,for(,表达式,1;,表达式,2;,表达式,3),语句,执行过程:,首先求解表达式,1,然后求解表达式,2,如果表达式,2,为真,则执行语句,执行完语句后,在求解表达式,3,再求解表达式,2,,为真再执行语句,否则结束循环,表达式,1,:通常是为循环变量初始化,表达式,2,:循环条件,结果为真执行循环语句,为假结束循环,表达式,3,:通常是改变循环变量的值,使循环趋于结束,2.5,控制语句,2.5.2,循环结构,1.for,语句,例:求,1+2+3+100,int sum=0;,int i;,for(i=1;,i=100;i+),sum,+=i;,System.,out.println(sum);,例,2.13,使用,for,循环输出水仙花,数,水仙花,数,是一个三位数,他的各位数的立方和与这个数本身相等,注意:如何求一个整数的每一位数。,2.5,控制语句,2.5.2,循环结构,2.while,语句,使用格式:,while(,表达式,),语句,执行过程:,首先求解表达式,如果表达式为真,则执行语句,否则结束循环,执行完语句后,再判断表达式的真假,来决定循环是否结束,2.5,控制语句,2.5.2,循环结构,2.while,语句,例:求,1+2+3+100,int sum=0;,int,i=1;,while(,i=,100),sum,+=i,;,i+;,System.,out.println(sum);,例,2.14,使用,while,实现,循环,2.5,控制语句,2.5.2,循环结构,3.dowhile,语句,使用格式:,do,语句,while,(,表达式,);,执行过程:,首先执行语句,再求解表达式,如果表达式为真,则再次执行语句,否则结束循环,2.5,控制语句,2.5.2,循环结构,3.dowhile,语句,例:求,1+2+3+100,int sum=0;,int i=1;,do,sum+=i;,i+;,while(i=100);,System.,out.println(sum);,例,2.15,使用,dowhile,实现循环,例,2.16,编写程序,实现一个简单的计时器,2.5,控制语句,2.5.3,其他语句,1.break,Break,可以用在,switch,语句中或循环语句中。其作用是结束,switch,语句或循环语句。,2.continue,continue,这能用于循环语句中。其作用是结束本次循环,试图进入下次循环。,3.return,return,用于从方法返回。,2.5,控制语句,2.5.3,其他语句,例,求,1100,不能被,3,整除的整数之,和(,continue,),int i;,int sum=0;,for(i=1,;i=100;i,+),if(i%3,=0),continue,;,sum,+=i;,System.,out.println(sum,);,2.5,控制语句,2.5.3,其他语句,例,判断某个整数是否为,素数(,break,),int i,n=11;,for(i=2,;iy),m=x,;,else,m=y,;,return m;,调用:,int a=max(20,30);,实参传递给形参,返回值,形参,实参,2.6,方法,与方法重载,2.6.2,方法的调用,有返回值方法的调用,像刚才的例子。,再看,例,2.17,有返回值的方法,调用,有返回值方法的调用,可将返回值赋给一个变量,也可以直接输出,或者参与各种运算。,2.6,方法,与方法重载,2.6.2,方法的调用,2.,无返回值方法的调用,如,System.out.println(),中的,println(),方法就没有返回值,直接调用即可。,例,2.18,无返回值的方法,调用,2.6,方法,与方法重载,2.6.3,方法重载,可以,定义多个相同名字的函数,只要,它们参数,的,个数或类型不完全一致,即可,编译程序根据实参与形参的类型及个数自动确定调用哪一个同名函数,这就是,函数重载,,这些同名函数称为,重载函数,。,2.6,方法,与方法重载,2.6.3,方法重载,如定义,两,个方法,,分别求两个整数及两个实数的最大,值。,public static int,max(int x,int y),if(xy,),return,x;,else,return,y;,public static,double,max(double x,double y),if(xy),return x;,else,return y;,2.6,方法,与方法重载,2.6.3,方法重载,例,2.19,方法重载,第,3,章 数组,3.1,一维数组,3.1.1,一维数组的定义与使用,定义格式:数据类型,数组,名;,或 :数据类型,数组,名,;,然后:,数组,名,=new,数据类型,数组元素个数,;,定义数组时只是说明定义的数组,具体有多少个元素以及这些元素保存在什么地方,是通过,new,实现的。,数组元素的个数可以用数组的,length,属性获知。,3.1,一维数组,3.1.1,一维数组的定义与使用,例如,a,1,2,3,4,5,int a;,a=new int5;,a0=1;,a1,=,2;,a2,=,3;,a3,=,4;,a4,=,5;,3.1,一维数组,3.1.1,一维数组的定义与使用,例,3.1,遍历,数组,例,3.2,使用属性,length,来获取数组的长度,3.1,一维数组,3.1.2,数组的内存分析,栈,的特点是变量一旦超出了作用域,该变量就会从内存中消失,同时释放内存空间,。,堆,内存中存储的都是对象数据,,,一旦不被引用,,,就可能被当做垃圾回收,3.2,数组,常见的异常,1.ArrayIndexOutOfBoundsException,索引,值,(下标),越界,例,3.3,索引,值越界产生的异常,2.NullPointerException,空指针异常,例,3.3,空,指针异常,注:在后面的章节会详细介绍异常和异常处理,3.3,Arrays,的使用,Array,是,Java,类库中提供的类,,用于,对数组的各种,操作,。,第,5,章 详细介绍,Arrays,的使用,3.4,二,维数组,二维数组可以看成是每个元素是一维数组的数组,定义如下:,数组类型,数组,名,=new,数组类型,数组行数,数组列数,;,或:,数组类型,数组,名,;,数组,名,=new,数组类型,数组行数,;,数组名,0=new,数组类型,第,1,行列数,;,数组名,1=new,数组类型,第,2,行列数,;,数组名,数组行数,-1=new,数组类型,最后一行列数,;,3.4,二,维数组,例:,int a=,new,int43;/,四行三列的二维数组,列:,int b=new int2;,/,两,行的,二维数,组,b0,=new int3,;/,第一行,3,个元素,b1,=new int5,;/,第二行,5,个,元素,二维数,组的长度是数组的行数,如上面数组,a,长度是,3,,,b,的长度数,2,。,二,维数组每一行的长度可以不同。,例,3.6,二维数组的长度,3.4,二,维数组,二维数组的初始化:在创建数组的同时为元素赋值,称为数组的初始化,如:,int x=new int0,1,2,1,2,3,4;,当然也可以先定义数组,然后再给数组元素赋值,如,例,3.7,。,3.4,二,维数组,例,用二维数组存储乘法口诀表。,public static void main(String args),int,a=new int9;,for(int,i=0;i9;i+),ai,=new inti+1;,for(int,j=0;j=i;j+),ai,j=(i+1)*(i+1);,for(int,i=0;i9;i+),for(int,j=0;j,文本)、解析(文本,-,日期)和规范化。,构造方法:,public SimpleDateFormat(String pattern),解析,:,public Date parse(String source)throws,ParseException,格式化:,public final String format(Date date,),标记,描述,Y,表示年,年份是四位数字,所以需要使用,yyyy,表示年。,M,表示月,月份是两位数字,所以需要使用“,MM,”表示月。,d,表示日,日是两位数字,所以需要使用“,dd,”表示日。,H,表示时,两位数字表示,m,表示分,两位数字“,mm,”,s,表示秒,两位数字“,ss,”,S,表示毫秒,三位数字“,SSS,”,6.6 SimpleDateFormat,例,6.8 SimpleDateFormat,类的格式设置,6.7,List,接口,Collection,ArrayList,Set,List,LinkedList,Vector,6.7,List,接口,List,接口的主要方法:,public,E get(int index,),根据,索引取得指定的元素内容,public E set(int index,E element,),修改,指定索引元素的内容,Public ListIterator listIterator,(),为,ListIterator,接口,实例化,6.7.1 ArrayList,类,-,数组链表,例,6.9 List,的基本使用,例,6.10,输出集合数据,例,6.11 List,接口中,contains(),、,remove(),方法的,使用,6.7,List,接口,6.7.2,Vector,类,-,向量,例,6.12 Vector,类的,使用,6.7.3 LinkList,类,-,链表,例,6.13 ArrayList,的添加、删除操作,第,7,章 异常处理,7.1 Java,异常基本概念,Object,Error,Exception,Throwable,可抛出的,错误,异常,检查,异常,(非运行,时异常,),非,检查异,常(运行时异常),ClassNotFoundException,Exception,DataFormatException,IllegalAccessException,InterruptedException,IOException,RuntimeException,ArithmeticException,SecurityException,NullPointerException,IllegalArgumentException,NumberFormatException,IndexOutOfBoundsException,ArrayIndexOutOfBoundsException,StringIndexOutOfBoundsException,必须处理,可以不处理,7.1 Java,异常基本概念,IOException,ArithmeticException,NullPointerException,IndexOutOfBoundsException,ClassCastException,IllegalArgumentException,Java,的异常处理:,使用,trycatchfinally,结构处理异常,将程序的业务与异常处理分离,逻辑更清晰。,7.1 Java,异常基本概念,例如下面的代码在运行时,就会产生异常:,int a=10;,int b=0,;,Int c=a/b;,System.out.println(c);,System.out.println(,程序结束,);,运行,时产生异常,输出下列信息,程序结束:,Exception,in thread main,java.lang.ArithmeticException:/by zero,at test.Test.main(,Test.java:71),7.1 Java,异常基本概念,使用异常处理后的代码如下:,try,int a=10;,int b=0;,int c=a/b;,System.out.println(c);,catch(ArithmeticException e),System.out.println(,除数为零,产生异常,);,System.out.println(,程序结束,);,运行结果如下:,除数为零,产生异常,程序结束,将可能产生异常的代码放在,try,块中,使用,catch,捕获异常,一旦抛出异常就会在后面的,catch,中找到一个匹配的异常,进入,catch,块。,7.2 throw,和,throws,关键字,7.2.1 throw,关键字,除了程序运行由于各种原因可产生异常,我们也可以主动使用,throw,关键字抛,出一个异常对象,。,例如,7.1,抛出异常,7.2 throw,和,throws,关键字,7.2.2,throws,关键字,如果一个方法中会产生异常,二不想在方法中处理这个异常,可在方法声明时,使用,throws,关键字。,表示这个方法会产生异常,要求调用他的方法处理,。,例,7.2 throws,关键字,例,7.3,主方法中使用,throws,抛出异常,7.3 trycatchfinally,捕获异常,7.3.1 try-catch,语句,try,语句,;,/,可能产生异常的语句,。,catch,(异常类,1,变量名,),异常,处理,1,catch,(异常类,2,变量名,),异常,处理,2,匹配规则,(1),参数与产生的,异常属于,一个类;,(,2),参数是产生的异常的父类;,(,3),参数是一个接口时,产生的异常实现了这一接口,。,例,7.4,try-catch,异常处理,结构,7.3 trycatchfinally,捕获异常,7.3.2,try-catch-finally,try,语句,;,/,可能产生异常的语句,。,catch,(异常类,1,变量名,),异常,处理,1,catch,(异常类,2,变量名,),异常,处理,2,finally,/,执行清除工作的语句,.,不管有没有异常,,finally,中的代码总是要执行的,。,例,7.5,打开一个文件流,读入两个字符串,转化为整数,并求其和。,7.3 trycatchfinally,捕获异常,7.3.3 try,,,catch,,,finally,,,throw,,,throws,联合使用,例,7.6 try catch,综合运用,7.4,自定义异常,自定义异常一般可继承,Exception,一般只需要写构造方法,例,7.7,自定义异常,第,8,章,图形用户界面,8.1 AWT组件,8.1.1 AWT 组件简介,AWT,(,Abstract Window Toolkit,)是抽象窗口工具包,是第一代的,Java GUI,组件,绘制依赖于底层的操作系统,。,AWT,组件位于,java.awt,包中,8.1 AWT组件,例,8.1,显示框架,窗口,例,8.2,显示多个框架,窗口,8.1.2 Frame,组件与,Panel,组件,setLocation(),setSize(),setBackground(),setResizable(),setVisible(),setBounds(),8.1 AWT组件,例,8.3,在框架窗口(,Frame,)中显示一个面板(,Panel,),例,8.4,在框架窗口(,Frame,)中显示多个面板。,setLayout(null,),setBounds,(),add(),8.1.2 Frame,组件与,Panel,组件,8.1 AWT组件,可以使用,布局管理器,管理容器中组件的位置。,setLayout(),设置布局管理器。,8.1.3 布局管理器,LayoutManage,FlowLayout,BorderLayout,GridLayout,GridBagLayout,CardLayout,8.1 AWT组件,8.1.3 布局管理器,FlowLayout,FlowLayout,按着组件添加到容器中的顺序从左到右、从上到下依次排列,因此也称为流式,布局,例,8.5,使用,FlowLayout,在框架窗口(,Frame,)中显示多个按钮。,对齐,方式,:,LEFT,(左对齐,),RIGHT,(右对齐,),CENTER,(居中对齐,),LEADING,(与容器方向的开始边对齐,),TRAILING,(与容器方向的结束边对齐,),垂直方向间距,水平方向间距,8.1 AWT组件,8.1.3 布局管理器,BorderLayout,布局管理器把容器的布局分为东、西、南、北、中五个,区域,。,例,8.6,使用,BorderLayout,在框架窗口(,Frame,)中显示,5,个按钮,垂直方向间距,水平方向间距,BorderLayout,8.1 AWT组件,8.1.3 布局管理器,GridLayout,以矩形网格形式对容器的组件进行布置,也称为网格布局管理器。,例,8.7,使用,GridLayout,在框架窗口(,Frame,)中显示,7,个按钮。,行数,列,数,垂直方向间距,水平方向间距,GridLayout,8.1 AWT组件,8.1.,4,事件处理,8.1 AWT组件,8.1.,4,事件处理,1.,按钮事件处理,ActionEven-,getActionCommand,(),getSource,(),ActionListener-,actionPerformed,(),Button-addActionListener(),setActionCommand(),例,8.8,在窗口中放置两个按钮,分别单击两个按钮,输出不同的信息。,8.1 AWT组件,8.1.,4,事件处理,2.,文本框,的事件处理,ActionEven,TextEvent-,t
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服