您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > java语言实用教程第3章
第3章Java语句及其控制结构3.1Java程序结构3.2选择语句3.3循环语句3.4跳转语句习题例3.1以一个程序范例来说明Java程序的构成。importjava.applet.Applet;importjava.awt.*;publicclassGetSquareextendsApplet{Labellabel1;publicvoidinit(){label1=newLabel(″前30个数的平方″);add(label1);}3.1Java程序结构3.1.1Java程序构成publicvoidpaint(Graphicsg){for(inti=0;i30;i++){intx=i%10,y=i/10;g.drawString(String.valueOf((i+1)*(i+1)),20+30*x,50+25*y);}}}从例3.1可以看到,Java源程序一般包括Java包引入(如果有的话)和类定义两部分。Java程序中,必须含有一个可被外界(通常是java解释器)所直接调用的类,这个类称为该应用程序的主类。一个源程序中可以定义多个类,但只能有一个是主类,JavaApplet程序的主类是继承自Applet的子类。JavaApplication程序的主类是包含main方法的类,整个应用程序就是从main方法开始执行的。类定义由类声明语句和类体组成。类声明语句用来说明类的名称、访问权限及类的属性。类体也由两部分组成:成员变量和成员方法。在例3.1GetSquare类中,lable1是添加的成员变量,init和paint是继承下来的成员方法。成员变量为类中定义的变量(又称属性、域),用来说明类的状态和特性。定义成员变量需要声明成员变量的名称、类型。成员方法为类中的方法,用来实现类的功能和行为,是完成程序任务的关键。JavaApplication程序中一定要有main主方法。而JavaApplet程序一般要有init()初始化方法或paint(Graphicsg)画图方法。应该注意到,类体中除了成员变量说明语句外没有其他语句,Java规定所有操作性语句必须放在成员方法中。方法类似于其他程序设计语言中的函数,可以调用,可以有返回值。成员方法可以继承父类的方法,也可以自定义成员方法。根据需要,方法中可以定义局部变量,但更重要的是组织方法中的语句结构,因为Java程序由各种语句结构控制着程序流程和功能的实现。Java语句是Java标识符的集合,由关键字、常量、变量和表达式构成。Java语句分为说明性语句和操作性语句。Java说明性语句用来说明包和类的引入、类的声明、变量的声明。例如:importjava.applet.Applet;//publicclassGetSquareextendsApplet;//声明类语句Java操作性语句有表达式语句、复合语句、选择语句和循环语句等。语句以分号“;”作为结束标志,单独的一个分号被看作一个空语句,空语句不做任何事情。3.1.2Java语句1.表达式语句在表达式后边加上分号“;”,就是一个表达式语句。经常使用的表达式语句有赋值语句和方法调用语句。表达式语句是最简单的语句,它们被顺序执行,完成相应的操作。例如:intk,i=3,j=4;k=i+j;System.out.println(″k=″+k);2.复合语句复合语句也称为块(block)语句,是包含在一对大括号{}中的任意语句序列。与其他语句用分号作结束符不同,复合语句右括号}后面不需要分号。尽管复合语句含有任意多个语句,但从语法上讲,一个复合语句被视为一个简单语句。例3.2复合语句示例。classBlock{publicstaticvoidmain(Stringargs[]){intk,i=3,j=4;k=i+j;System.out.println(″k=″+k);{floatf;f=j+4.5F;i++;System.out.println(″f=″+f);}System.out.println(″i=″+i);}}利用选择语句结构可以根据条件控制程序流程,改变程序执行的顺序。3.2选择语句if语句的语法格式为:if(条件表达式)s1语句;这是最简单的单分支结构。条件表达式的值为true,就执行s1语句,否则就忽略s1语句。s1语句可以是复合语句。3.2.1if语句if语句通常与else语句配套使用,形成二分支结构。它的语法格式为:if(条件表达式)s1语句;elses2语句;当条件表达式的值为true,就执行s1语句,忽略else和s2语句;条件表达式的值为false,程序忽略s1语句,执行else后面的s2语句。s1和s2都可以是复合语句。3.2.2if…else语句例3.3比较两个数的大小并按升序输出,运行结果如图3.1所示。classC1{publicstaticvoidmain(Stringargs[]){doubled1=23.4;doubled2=35.1;if(d2=d1){System.out.println(d1);System.out.println(d2);}else{System.out.println(d2);System.out.println(d1);}}}图3.1对于复杂的情况,可以嵌套使用if…else语句。它的语法格式为:if(条件表达式1)s1语句;elseif(条件表达式2)s2语句;elses3语句;在这里依次计算条件表达式,如果某个条件表达式的值为true,就执行它后面的语句,其余部分被忽略;所有表达式的值都为false,就执行最后一个else后的s3语句。s1、s2和s3都可以是复合语句。3.2.3if…else复合结构例3.4下面是一个用if…else语句构造多分支程序的例子,判断某一年是否为闰年。闰年的条件是符合下面二者之一:能被4整除,但不能被100整除;能被400整除。输出结果如图3.2所示。publicclassLeapYear{publicstaticvoidmain(Stringargs[]){booleanleap;intyear=1989;if((year%4==0&&year%100!=0)||(year%400==0))//方法1System.out.println(year+″年是闰年″);elseSystem.out.println(year+″年不是闰年″);year=2000;//方法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+″年不是闰年″);year=2050;//方法3if(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+″年不是闰年″);}}图3.2方法1用一个逻辑表达式包含了所有的闰年条件;方法2使用了if…else语句的复合形式;方法3则通过大括号{}对if…else进行匹配来实现闰年的判断。可以根据程序对比这3种方法,体会其中的联系和区别,在不同的场合选用适当的方法。虽然嵌套的条件语句可实现多个分支处理,但嵌套太多时容易出错和混乱,这时可以使用开关语句switch处理。实际上开关语句switch也是一种if…else结构,不过它使你在编程时很容易写出判断条件,特别是有很多条件选项的时候。开关语句switch的语法格式为:switch(表达式){case常量1:语句1;break;3.2.4switch开关语句case常量2:语句2;break;......default:语句n;}其中switch、case、default是关键字,default子句可以省略。开关语句先计算表达式,然后将表达式值与各个常量比较,如果表达式值与某个常量相等,就执行该常量后面的语句;如果都不相等,就执行default下面的语句。如果无default子句,就什么都不执行,直接跳出开关语句。使用开关语句时,注意以下几点:•case后面的常量必须是整数或字符型,而且不能有相同的值;•通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。否则,在第一个满足条件case后面的所有语句都会被执行,这种情况叫做落空。例3.5有break语句的switch结构示例。本程序当温度变量c小于10℃时,显示“有点冷”;c小于25℃时,显示“合适”;c大于25℃且小于35℃时,显示“有点热”;c大于35℃时,显示“太热了”。输出结果为c等于28℃时的情况如图3.3所示。图3.3publicclassW1{publicstaticvoidmain(Stringargs[]){intc=28;switch(c10?1:c25?2:c35?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.6无break语句的switch结构示例,输出结果如图3.4所示。图3.4publicclassW2{publicstaticvoidmain(Stringargs[]){intc=28;switch(c10?1:c25?2:c35?3:4){case1:System.out.println(″″+c+″℃有点冷″);case2:System.out.println(″″+c+″℃合适″);case3:System.out.println(″″+c+″℃有点热″);default:System.out.println(″″+c+″℃太热了″);}}}循环可使程序根据一定的条件重复执行某一部分程序代码,直到满足终止循环条件为止。Java中提供的循环语句有:确定次数循环(for)、条件循环(while)、先执行后判定循环(do)。3.3循环语句如果希望程序的一部分内容按固定的次数重复执行,通常可以使用for循环。for循环采用一个计数器控制循环次数,每循环一次计数器就计数,直到完成给定的循环次数为止。3.3.1for循环语句例3.7对一维数组中的每个元素赋值,然后按逆序输出,结果如图3.5所示。publicclassA2{publicstaticvoidmain(Stringargs[]){inti;inta[]=newint[5];for(i=0;i5;i++)a[i]=i;for(i=a.length-1;i=0;i--)System.out.println(″a[″+i+″]=″+a[i]);}图3.5例3.8按5℃的增量打印出一个从摄氏度到华氏度的转换表,输出结果如图3.6所示。classCtoF{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.6for循环的语法格式为:for(表达式1;表达式2;表达式3)循环体其中表达式1可以给出计数器的初值,是一个赋值语句;表达式2指出循
本文标题:java语言实用教程第3章
链接地址:https://www.777doc.com/doc-2879043 .html