- 18.89 MB
- 2022-04-29 14:33:15 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'第三章JAVA语句及其控制结构
本章主要任务了解Java程序的主要构成成分1了解Java类的主要构成成分2了解Java循环语句的构成及作用5了解Java跳转语句的构成及作用6了解Java语句的类型3了解Java选择语句的构成及作用4
本章目录3需求分析这用于解释这个概念3.1java语句的类型3.2选择语句3.3循环语句3.4跳转语句3.5知识拓展——注解
3.1Java语句的类型本节的内容主要介绍Java程序的构成成分、类的构成成分、Java语句的种类以及说明性语句、表达式语句和复合语句的特点。
5importjava.awt.*;importjavax.swing.*;publicclassexp3_1extendsJFrame{Labellabel1=newLabel("类的结构");publicexp3_1(){setSize(400,200);setVisible(true);add("North",label1);}publicvoidpaint(Graphicsg){g.fillRect(100,80,80,100);}publicstaticvoidmain(String[]args){newexp3_1();}}Java包引入语句类声明语成员变量构造方法paint方法main方法类体3.1.1Java程序构成
3.1.1Java程序构成6说明:程序的主要构成Java程序一般包括两部分:Java包引入(如果有的话)语句、类定义语句;类定义语句由类声明语句和类体组成。类声明语句用class来声明类的名称,其他关键字为修饰符来说明类的访问权限,及类的属性。类体由成员变量和成员方法等组成。类可以分为主类与普通类。Java程序中,必须含有一个可被外界(通常是Java解释器)所直接调用的类,这个类称为这个Java程序的主类,即可以被运行的类。主类常用public关键字来修饰。不是主类的类都是普通类,可以用来定义属性、方法,设计对象的功能。
3.1.2Java语句的种类说明性语句Java的说明性语句包含包和类引入语句、声明类语句、声明变量语句、声明对象语句等。例如:操作性语句Java的操作性语句包含表达式语句、复合语句、选择语句和循环语句、跳转语句等。Java规定所有的操作性语句必须放在成员方法中。7importjava.sql.Connection;//包引入语句publicclassReadViolation;//声明类语句inti;//声明变量语句
3.1.2Java语句的种类表达式语句在表达式后边加上分号“;”就是一个表达式语句。表达式语句是最简单的语句,它们被顺序执行,完成相应的操作任务。表达式语句主要有赋值语句和方法调用语句。例如:8intx,i=1,j=2;//声明变量语句x=j-i;//赋值语句System.out.println("x:"+k);//方法调用语句
3.1.2Java语句的种类复合语句复合语句也称为块(block)语句,是包含在一对大括号“{}”中的任意语句序列,有一组0到多个语句组成。与其他语句用分号作结束符不同,复合语句右括号“}”后面不需要分号尽管复合语句含有任意多个语句,但从语法上讲,一个复合语句被看作一个简单语句。9publicclassexp3_2{publicstaticvoidmain(String[]args){booleancondition=true;if(condition){//执行第一个块语句System.out.println("Conditionistrue.");}//结束block1else{//执行第二个块语句System.out.println("Conditionisfalse.");}//结束block2}}例3.2复合语句示例说明:在程序中通过两个复合语句实现了对于condition条件的判断,如果condition为真,则执行第一个块语句block1,否则执行第二个块语句block2。
3.2选择语句表达式语句与复合语句都是按顺序从上到下逐行执行每条命令。利用选择语句结构就可以根据条件控制程序流程,改变语句执行的顺序。本节的内容主要介绍Java的4种选择语句的使用方法:单分支选择语句(if语句)二分支选择语句(if…else语句)多分支选择语句(if…elseif…else语句)先执行后判定循环(do…while)
3.2.1单分支选择语句(if语句)单分支选择语句是一种简单的if条件语句,语法格式如下:条件是必要的参数,可以由多个表达式组成,但是最后结果一定是boolean类型if条件语句执行结果11if(条件){s1(语句);}
3.2.2二分支选择语句(if…else语句)if语句通常与else语句配套使用,形成二分支结构,语法格式如下:if…else条件语句执行结果12if(条件){s1语句;//如果布尔表达式的值为true}else{s2语句;//如果布尔表达式的值为false}
3.2.2二分支选择语句(if…else语句)13publicclassexp3_3{publicstaticvoidmain(Stringargs[]){intx=10;if(x<20){System.out.print("这是if语句");}else{System.out.print("这是else语句");}}}例3.3判断两个数的大小并输出指定语句说明:程序通过if…else语句实现了对传入参数的比较判断功能。参数x的值为10小于20,条件判断x<20值为true,因此执行输出"这是if语句",忽略else语句,最终输出“这是if语句”。
3.2.3多分支选择语句(if…elseif…else语句)对于超过二分支选择的情况,可使用多分支选择语句,语法格式为:if…elseif…else语句执行结果14if(条件1)s1语句;//如果布尔条件1的值为true执行s1代码elseif(条件2)s2语句;//如果布尔条件2的值为true执行s2代码elseif(条件3)s3语句;//如果布尔条件3的值为true执行s3代码elses4语句;//如果以上布尔表达式都不为true执行s4代码
3.2.3多分支选择语句(if…elseif…else语句)15publicclassexp3_4{publicstaticvoidmain(Stringargs[]){intx=20;if(x==5){System.out.print("Xis5");}elseif(x==15){System.out.print("Xis15");}elseif(x==25){System.out.print("Xis25");}else{System.out.print("Xis:"+x);}}}例3.4下面是使用if…elseif…else语句的简单例子。说明:程序使用了多分支语句进行多个条件的判断,如果传入的初始化值满足其中的elseif语句,则会跳过执行其他的elseif以及else语句。要注意if…elseif…else语句中最多只能有一个else语句
3.2.4嵌套的if…else语句嵌套的if…else语句是指可以在另一个if或者elseif语句中使用一个或者多个的if或者elseif语句。其语法格式为:16if(条件1){if(条件2){s1语句}else{S2语句}}else{if(条件3){S3语句}else{S4语句}}
3.2.4嵌套的if…else语句17//方法1if((year%4==0&&year%100!=0)||(year%400==0))System.out.println(year+"年是闰年");elseSystem.out.println(year+"年不是闰年");}例3.5判断某一年是否为闰年。//方法2if(year%4!=0)leap=false;elseif(year%100!=0)leap=true;elseif(year%400!=0)leap=false;elseleap=true;if(leap==true)System.out.println(year+"年是闰年");elseSystem.out.println(year+"年不是闰年");//方法3year=2050;if(year%4==0){if(year%100==0){if(year%400==0)leap=true;elseleap=false;}elseleap=false;}elseleap=false;if(leap==true)System.out.println(year+"年是闰年");elseSystem.out.println(year+"年不是闰年");}说明:方法1用一个逻辑表达式包含了所有的闰年条件;方法2使用了多分支选择语句(if…elseif…else语句);方法3通过大括号“{}”对if…else进行匹配来实现闰年的判断。
3.2.5开关语句(switch语句)虽然嵌套的条件语句可实现多个分支处理,但嵌套太多时容易出错和混乱,这时可以使用开关语句switch处理。使用它可以容易地写出判断条件,特别是有很多条件选项的时候。其语法格式为:18switch、case、default是关键字,default子句可以省略开关语句先计算条件的值,然后将条件值与各个常量比较switch(表达式){case常量1:语句1;break;case常量2:语句2;break;......default:语句n;}
3.2.5开关语句(switch语句)19switch(c<10?1:c<25?2:c<35?3:4){case1:System.out.println(""+c+"℃有点冷");break;case2:System.out.println(""+c+"℃正合适");break;case3:System.out.println(""+c+"℃有点热");break;default:System.out.println(""+c+"℃太热了");}例3.6switch语句的使用,有break语句。当温度变量c小于10℃时,显示“有点冷”,c小于25℃时,显示“合适”,c小于35℃时,显示“有点热”,c大于35℃时,显示“太热了”switch(c<10?1:c<25?2:c<35?3:4){case1:System.out.println(""+c+"℃有点冷");case2:System.out.println(""+c+"℃正合适");case3:System.out.println(""+c+"℃有点热");default:System.out.println(""+c+"℃太热了");}例3.7switch语句的使用,无break语句。当温度变量c小于10℃时,显示“有点冷”,c小于25℃时,显示“合适”,c小于35℃时,显示“有点热”,c大于35℃时,显示“太热了”说明:通过这两个例子可以看出break语句的作用。例3.7由于缺少break语句,使得程序执行完case3下面的语句,紧接着又执行了default下面的语句。
3.2.6在switch语句中应用枚举类型20例3.8switch语句与枚举操作的使用。publicclassexp3_8{publicenumSeason{SPRING,SUMMER,AUTUMN,WINTER;}publicstaticvoidviewSeason(Seasonseason){switch(season){caseSPRING:System.out.println("[春天,枚举常量:"+season.name()+"]");break;}}publicstaticvoidmain(String[]arg){viewSeason(Season.SPRING);viewSeason(Season.SUMMER);}}说明:从本例可以看出在类viewSeason中也可以声明枚举类型Season。从本例可以看出在switch语句中应用枚举简洁又方便。通过“枚举名.常量名”方式可以调用枚举中的常量,例如,本例Season.SPRING调用Season枚举类中的静态常量SPRING。
3.3循环语句到目前为止,我们看到的都是线性的程序,即每行命令只有一次执行的机会。能否重复执行一些语句呢?利用循环可使程序根据一定的条件重复执行某一部分程序语句,直到满足终止循环条件为止。本节的内容主要介绍Java的3种循环语句的使用方法:确定次数循环(for)先判定后执行循环(while)先执行后判定循环(do…while)
for循环采用一个计数器控制循环次数,每循环一次计数器就加1,直到完成给定的循环次数为止。3.3.1确定次数循环语句(for循环)publicclassexp3_9{publicstaticvoidmain(Stringargs[]){inti;inta[]=newint[5];for(i=0;i<5;i++)a[i]=i;for(i=a.length-1;i>=0;i--)System.out.println("a["+i+"]="+a[i]);}}例3.9利用for循环语句为一维数组中的每个元素赋值,然后按逆序输出。
3.3.1确定次数循环语句(for循环)classexp3_10{publicstaticvoidmain(Stringargs[]){intfahr,cels;System.out.println("摄氏度华氏度");for(cels=0;cels<=40;cels+=5){fahr=cels*9/5+32;System.out.println(""+cels+""+fahr);}}}例3.10利用for循环语句,按5度的增量打印出一个从摄氏度到华氏度的转换表说明:从上面的例子中归纳出for循环的语法格式为:for(初始化语句;循环条件;迭代语句){语句序列}初始化语句用于初始化循环体变量;循环条件用于判断是否继续执行循环体;迭代语句用于改变循环条件的语句;语句序列称为循环体,当循环条件的结果为true时,循环体将重复执行。for循环语句的流程首先执行初始化语句,然后判断循环条件,当循环条件为true时,就执行一次循环体,最后执行迭代语句,改变循环变量的值。初始化语句中的变量初始化可在for语句之前定义,也可在循环括号中定义。使用循环语句时常常会遇到死循环的情况,就是无限制地循环下去。所以在使用for循环时,要注意初值、终值和增量的搭配。
foreach语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach语句是for语句的特殊简化版本,任何的foreach语句都可以改写为for语句版本,但是foreach语句并不能完全取代for语句。3.3.2foreach循环语句publicstaticvoidforDisplay(int[]a){for(inti=0;i0){//while循环sum=0;for(inti=1;i<=n;i++)sum+=i;//for循环System.out.println("前"+n+"个数的总和为:"+sum);n--;}//改变计数器的值}}例3.14分别用while循环语句与for循环语句嵌套实现累计求和。说明:程序使用了while循环语句与for循环语句嵌套,对n和sum初始化并赋值,while循环判断“n>0”值为true,执行while内嵌套的for循环语句,向屏幕输出前n个数的总和值。
一个循环一般应包括以下4部分内容:初始化部分:用来设置循环的一些初始条件,计数器清零等。循环体部分:这是反复被执行的一段代码,可以是单语句,也可以是复合语句。迭代部分:这是当前循环结束,下一次循环开始时执行的语句,常用来使计数器加1或减1。终止部分:通常是描述条件的逻辑表达式或关系表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。3.3.6循环语句小结
3.4跳转语句跳转语句可以无条件改变程序的执行顺序。本节的内容主要介绍Java的3种跳转语句的使用方法:break语句continue语句return语句
3.4.1break语句classexp3_15{publicstaticvoidmain(Stringargs[]){booleantest=true;inti=0;while(test){i=i+2;System.out.println("i="+i);if(i>=10)break;}System.out.println("i为"+i+"时循环结束");}}break语句提供了一种方便的跳出循环的方法,用其可以立即终止循环,跳出循环体。它在for,while或do…while循环中,有强制终止循环的作用,在switch语句跳出该语句,继续执行其他语句。说明:执行这个程序时,尽管while条件的值始终为真,但实际上只循环了5次。这是因为当i大于等于10时遇到了break语句,使流程跳出了循环
3.4.2continue语句classexp3_16{publicstaticvoidmain(Stringargs[]){for(inti=2;i<=9;i+=2){if(i==6)continue;System.out.println(i+"的平方="+i*i);}}}continue语句只能用在循环结构中,它跳过循环体中尚未执行的语句,重新开始下一轮循环,从循环体第一个语句开始执行。在for循环中,continue语句使程序立即跳转到更新语句。在while或者do…while循环中,程序立即跳转到布尔表达式的判断语句。说明:程序采用for循环,int数据类型i从2开始进行for循环,每次计数器加2,当i值为6时执行continue语句,跳过“System.out.println(i+”的平方=“+i*i);”语句,重新开始下一轮循环。例3.16输出1~9中除6以外所有偶数的平方值。
3.4.3带标号的continue语句说明:程序中分别使用了continue语句和带标号的continue语句。在输出方法上分别使用了系统的println方法和print方法,二者的区别在于前者输出时换行,后者输出时不换行。Java也支持带标号的continue语句,通常用在嵌套循环的内循环中,可以用标号标出想跳到的那条语句继续重复执行程序。语法格式为:标识符:...continue标识符;例3.17通过一个嵌套的for循环来求100~200间的所有素数。for(inti=101;i<200;i+=2){intk=15;for(intj=2;j<=k;j++)if(i%j==0)continueouter;System.out.print(""+i);n++;if(n<10)continue;System.out.println();n=0;}
3.4.4return语句return语句用来返回方法的值,其通常位于一个方法体的最后一行,当程序执行到return语句时,退出该方法并返回一个值,继续执行调用这个方法语句的下一个语句。当方法用void声明时,说明不要返回值,return语句省略return语句格式为:当程序执行return语句时,先计算“表达式”的值,然后将表达式的值返回到调用该方法的语句。返回值的数据类型必须与方法声明数值类型一致,可使用强制类型转换使类型一致。return表达式;
3.4.4return语句classexp3_18{finalstaticdoublePI=3.14159;publicstaticvoidmain(Stringargs[]){doubler1=8.0,r2=5.0;System.out.println("半径为"+r1+"的圆面积="+area(r1));System.out.println("半径为"+r2+"的圆面积="+area(r2));}staticdoublearea(doubler){return(PI*r*r);}}例3.18使方法具有返回值的return语句说明:程序中定义了一个double数据类型具有返回值的area方法,通过return语句给area返回值(PI*r*r)。在main方法中,调用了area方法,输出了圆面积的数值。area方法的功能就像函数一样,通过area方法的参数指定一个半径的值,area方法得到一个面积值。
3.5知识拓展——注解注解是JDK1.5及以后版本引入的一个特性,与类、接口、枚举在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。本节主要介绍Java提供的内置注解、元数据注解与自定义注解
3.5.1注解概述注解(Annotation)也叫元数据,是一种代码级别的说明,其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。java.lang.annotation.Annotation是注解的接口,所有的注解都默认实现了此接口。注解不会直接影响到程序的语义,只是作为注解(标识)存在。使用注解时要在其前面增加@符号,在代码中的使用方式为“@注解名”。根据注解的作用,可以将注解分为:内置注解、元数据注解(或称元注解)与自定义注解三类。36
3.5.2内置注解与元注解内置注解在JDK5.0之后,Java内置了三种注解,可以在Java程序中直接使用,将其当成一个修饰符来使用,用于修饰它支持的程序元素。@Override用于限定重写父类方法,该注解只能用于方法。@Deprecated用于表示某个程序元素(类,方法等)已过时。如果在其他程序中使用了此元素,则在编译时将出现警告信息。@SuppressWarnings用于压制警告信息的出现37
3.5.2内置注解与元注解元注解元注解是修饰其他注解定义的注解。Jdk5.0定义了4个标准的meta-annotation元注解类型。@Target:用于描述注解的使用范围,表示该注解用于什么地方,未标注则表示该注解可用于所有的地方,可能范围值在枚举类ElemenetType中。@Retention:用于描述注解在什么级别保存其信息,即注解的生命周期。可选的参数值在枚举类型RetentionPolicy中。@Documented:用于描述修饰的注解将被javadoc工具提取成文档。@Inherited:用于描述允许子类继承父类中的注解。38
3.5.2内置注解与元注解39例3.19本例说明如何在类中使用内置注解@Deprecated//表示prin已过时。publicvoidprin(Stringname){System.out.println(name);}@Override//限定重写父类Object的toString()方法,否则会报编译错误publicStringtoString(){return"Person[name="+name+",age="+age+"]";}publicstaticvoidmain(String[]args){exp3_19person=newexp3_19();person.prin("");@SuppressWarnings("unused")inti;//因为变量i在程序中没有被使用,因此处有注解,不会有警告intj;}}说明:使用@Override注解,覆盖的方法一定要是其父类的方法,否则在Eclipse中会出现编译错误。调用由@Deprecated注解的方法时,在Eclipse中会出现警告信息。变量j在程序中没有被使用,又没有使用@SuppressWarnings(“unused”)注解,在Eclipse中会出现警告信息。
3.5.3自定义注解40声明注解格式如下:[public]@interface注解名{数据类型成员变量名称()[default初始值];}@interface其相当于继承了Annotation接口成员变量以无参数方法的形式来声明,即变量名称后必须有“()”名称和返回值数据类型定义了该成员变量的名字和类型指定变量的初始值要使用default关键字@interfaceDevelopInfo{//自定义注解类,Stringauthor()default"彭冲";//定义注解成员变量author,初始值为"彭冲"}
习题3-1分析下面的源程序的结构和运行结果。classCircleArea{finalstaticdoublePI=3.14159;publicstaticvoidmain(Stringargs[]){doubler1=8.0,r2=5.0;System.out.println("半径为"+r1+"的圆面积="+area(r1));System.out.println("半径为"+r2+"的圆面积="+area(r2));}staticdoublearea(doubler){return(PI*r*r);}}3-2根据下面的代码:if(x>0){System.out.println("第一");}elseif(x>-3){System.out.println("第二");}else{System.out.println("第三");}判断x的取值在什么范围内时将打印字符串“第二”()A.x>0B.x>-3C.x<=-3D.x<=0&x>-3
习题3-3关于下面程序段正确的说法是()charmychar="c";switch(mychar){default;case"a":System.out.println("a");break;case"b":System.out.println("b");break;}A.程序出错,default位置不对。B.程序出错,case表达式必须是int类型,不能使用char类型。C.程序正确,屏幕显示输出字符a。D.程序正确,屏幕无显示输出。3-4试编写一个程序,将1-500间能同时被2,5,7整除的数打印出来。3-5编写程序,根据考试成绩的等级打印出百分制分数段。设A为90分以上、B为80分以上、C为70分以上、D为60分以上、E为59分以下。要求在程序中使用开关语句。3-6编写程序,从10个数中找出最大值。3-7编写程序,计算n的阶乘(n!),设n=10。3-8编写程序,计算数学常数e的值,e=1+1/1!+1/2!+1/3!+…。
习题3-9编写程序,输出以下数据:N10*N100*N1000*N110100100022020020003303003000440400400055050050003-10编写程序,列出乘法口诀。3-11编写程序,输出1~100间的所有奇数。3-12以下程序的输出结果是什么?publicclassTest1{publicstaticvoidmain(Stringargs[]){inty,x=1,total=0;while(x<=10){y=x*x;System.out.println(y);total+=y;++x;}System.out.println("totalis"+total);}}
习题3-13以下程序的输出结果是什么?publicclassTest2{publicstaticvoidmain(Stringargs[]){intcount=1;while(count<=10){System.out.println(count%2==1?"****":"++++++++");++count;}}}3-14完整下面的程序,利用break语句和带标号的break语句分别退出一重循环和二重循环。for(i=0;i<10;i++){intj=i*10while(j<100){if(j==10)break;j=j+5;}}'
您可能关注的文档
- 卡通手绘英文课件PPT模板.pptx
- 数学北师大版二年级下册北师大版小学二年级下册数学《东南西北》课件PPT.pptx
- 英语人教版三年级下册课件PPT.pptx
- 韩顺平一周内学会linux课件PPT+pdf+doc鸟哥linux+韩顺平linux视频教程学习小结有目录.doc
- 高一上七中课件PPT1005kj特级教师茹清平给高三学生推荐的一组美文.doc
- 高一上七中课件PPT1005kj成都市2011.doc
- 语文园地8课件PPT四年级下册.ppt
- C#课件PPT课程资料教学作者二第6章 多媒体及图形图像技术.ppt
- JavaScript程序设计案例教程第2版许旻配套教学课件PPT第4章.ppt
- java教学全套课件PPT第2章 Java基本语法.ppt
- ProE野火版3.0模具设计教程全套配套课件PPT教案 第07章 修改模具设计.ppt
- ProE野火版3.0模具设计教程全套配套课件PPT教案 第03章 复杂模具的设计.ppt
- C#程序设计多媒体课件PPT陈锐主编.ppt
- 汽车美容实用教程全套配套课件PPT 第四章 汽车清洗美容产品介绍及应用.ppt
- 汽车性能与检测技术全套配套课件PPT 学习情境6 汽车行驶平顺性能检测.ppt
- 施工企业会计第二版辛艳红配套教学课件PPT 第9章 所有者权益.ppt
- 施工企业会计第二版辛艳红配套教学课件PPT 第12章 利润及利润分配.ppt
- 施工企业会计第二版辛艳红配套教学课件PPT 第11章_收入.ppt