《《方法设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《方法设计》PPT课件.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章 方法设计n n2.1 方法使用基础n n2.2 运算符与表达式n n2.3 流程控制语句n n2.4 算法设计举例2.1方法使用基础n n1.方法的定义n n2.方法调用与参数传递1.方法的定义qq方法首部的声明方法首部的声明 方法修饰符方法修饰符 方法返回值类型方法返回值类型 方法名方法名(形式参数表形式参数表)qq方法体方法体 是一个语句序列,具体描述方法的返回值、方法的参数和方是一个语句序列,具体描述方法的返回值、方法的参数和方法在类的成员变量之间的关系,以实现方法的功能。法在类的成员变量之间的关系,以实现方法的功能。qq方法的返回值方法的返回值 是方法向调用值返回的数据。若返回
2、值类型不是是方法向调用值返回的数据。若返回值类型不是void,void,方法体方法体中必须用中必须用returnreturn语句来返回一个方法声明时指定类型的值。语句来返回一个方法声明时指定类型的值。return return 表达式;表达式;两个方法声明的例子n n(1)(1)方法方法 setCNumber setCNumbervoid setCNumber(int xNumber)/void setCNumber(int xNumber)/方法首部声明方法首部声明 /方法体开始方法体开始 cNumber=xNumber;/cNumber=xNumber;/方法体中的语句,描述方法的功能方法
3、体中的语句,描述方法的功能 /方法体结束方法体结束n n(2)(2)方法方法 getCNumber getCNumberint getCNumber()/int getCNumber()/方法首部声明方法首部声明 /方法体开始方法体开始 return cNumber;/return cNumber;/将将cNumbercNumber的值作为的值作为getCNumbergetCNumber /方法的返回值方法的返回值 /方法体结束方法体结束2.方法的调用与参数传递qq调用对象成员方法的语法形式为调用对象成员方法的语法形式为 对象名对象名对象名对象名.成员方法名成员方法名成员方法名成员方法名(实际
4、参数表实际参数表实际参数表实际参数表)qq调用对象成员方法的语义是:计算实际参数表调用对象成员方法的语义是:计算实际参数表中各表达式的值,并将它们一一传递给被调用中各表达式的值,并将它们一一传递给被调用方法中对应的形式参数,执行被调用方法的方方法中对应的形式参数,执行被调用方法的方法体。方法调用的结果就是被调用方法的执行法体。方法调用的结果就是被调用方法的执行结果。结果。例2.1 一个实现两个float型数相加的方法class MethodDemo1class MethodDemo1 float add(float x,float y)float add(float x,float y)/建议
5、所取的方法名有助于说明方法的功能,以便阅读程序和记忆建议所取的方法名有助于说明方法的功能,以便阅读程序和记忆 float z;/z float z;/z是方法体的局部变量,作用域是是方法体的局部变量,作用域是addadd整个方法的方法体整个方法的方法体 z=x+y;z=x+y;return z;return z;class TryMethodDemo1 /class TryMethodDemo1 /主类主类 public static void main(String args)public static void main(String args)MethodDemo1 a=new Meth
6、odDemo1();MethodDemo1 a=new MethodDemo1();System.out.println(a.add(5,8);System.out.println(a.add(5,8);运行结果为运行结果为13.013.0例2.2 用对象作为参数传递值的数据相加方法。class ObjPara class ObjPara /定义对象作为参数的类,为便于举例,本方法只有一个成员变量定义对象作为参数的类,为便于举例,本方法只有一个成员变量 float temp;float temp;class MethodDemo2 class MethodDemo2 void add(floa
7、t x,float y,ObjPara z)/void add(float x,float y,ObjPara z)/方法首部声明,此方法没有返回值方法首部声明,此方法没有返回值 z.temp=x+y;/z.temp=x+y;/将将x+yx+y的结果存入类变量的结果存入类变量z z的成员变量的成员变量temptemp中。中。class TryMethodDemo2 /class TryMethodDemo2 /主类主类 public static void main(String abc)public static void main(String abc)ObjPara b=new ObjP
8、ara();ObjPara b=new ObjPara();MethodDemo2 a=new MethodDemo2();MethodDemo2 a=new MethodDemo2();a.add(4,6,b);a.add(4,6,b);System.out.println(b.temp);System.out.println(b.temp);运行结果为运行结果为 10.0 10.0例2.3 方法之间的消息发送与参数传递。class MethodDemo3 class MethodDemo3 float add(float x,float y)float add(float x,float
9、y)float z;z=x+y;return z;float z;z=x+y;return z;void callAdd(float m,float n)void callAdd(float m,float n)float t;t=add(m,n);float t;t=add(m,n);/*/*向方法向方法addadd发送消息,将参数发送消息,将参数m,nm,n的值分别传递给的值分别传递给x,yx,y,然后执行方法,然后执行方法addadd 的方法体,计算的方法体,计算x+yx+y,计算结果作为,计算结果作为addadd的返回值传回给的返回值传回给t*/t*/System.out.print(
10、m+n+=+t);System.out.print(m+n+=+t);class TryMethodDemo3 /class TryMethodDemo3 /主类主类 public static void main(String rgb)public static void main(String rgb)MethodDemo3 a=new MethodDemo3();a.callAdd(4,6);MethodDemo3 a=new MethodDemo3();a.callAdd(4,6);运行结果为运行结果为 4.0+6.0=10.0 4.0+6.0=10.0可以不引入变量t,而将本句话改为
11、System.out.print(m+n+=+addSystem.out.print(m+n+=+add(m,n);(m,n);例2.4 对象作为参数值进行消息发送与参数传递class ObjPara float temp;class ObjPara float temp;class MethodDemo4class MethodDemo4 void add(float x,float y,ObjPara z)void add(float x,float y,ObjPara z)z.temp=x+y;z.temp=x+y;void callAdd(float m,float n)void ca
12、llAdd(float m,float n)ObjPara k=new ObjPara();ObjPara k=new ObjPara();add(m,n,k);add(m,n,k);System.out.print(m+n+=+k.temp);System.out.print(m+n+=+k.temp);/k.temp /k.temp的值即为的值即为m+n m+n class TryMethodDemo4 /class TryMethodDemo4 /主类主类 public static void main(String jsj)public static void main(String
13、jsj)MethodDemo4 a=new MethodDemo4();MethodDemo4 a=new MethodDemo4();a.callAdd(4,6);a.callAdd(4,6);运行结果为运行结果为 4.0+6.0=10.0 4.0+6.0=10.02.2 运算符与表达式n n运算运算对数据进行的操作对数据进行的操作n n运算符运算符表示各种不同运算的符号表示各种不同运算的符号n n操作数操作数(operand)(operand)参与运算的数据参与运算的数据n n表达式表达式(Expression)(Expression)由操作数和运算符按由操作数和运算符按一定的语法形式组成
14、的有意义的符号序列。最一定的语法形式组成的有意义的符号序列。最简单的表达式只有一个最终变量或变量名。简单的表达式只有一个最终变量或变量名。n n常用的运算有:赋值运算,算术运算,关系运常用的运算有:赋值运算,算术运算,关系运算,逻辑运算,位运算,三元运算,对象运算。算,逻辑运算,位运算,三元运算,对象运算。下面分别进行介绍。下面分别进行介绍。Java语言的运算符(按优先级降序排列)n n一元运算一元运算+-+-!()+-+-!()右结合右结合n n算术运算算术运算*/%+-*/%+-n n移位运算移位运算 n n比较运算比较运算 =instanceof =!=instanceof =!=n n
15、按位运算按位运算&|&|n n短路运算短路运算&|&|n n条件条件(三元三元)运算运算?:?:右结合右结合n n赋值运算赋值运算 =“op=”(=“op=”(复合赋值运算复合赋值运算)右结合右结合“+”-”代表正负号“()”代表强制类型转换1.赋值运算n n赋值运算赋值运算用于修改变量内容。一般形式为用于修改变量内容。一般形式为 变量变量变量变量=表达式;计算出右边表达式的值赋给左边表达式;计算出右边表达式的值赋给左边表达式;计算出右边表达式的值赋给左边表达式;计算出右边表达式的值赋给左边的变量。如:的变量。如:的变量。如:的变量。如:a=2+3-1a=2+3-1n n复合赋值运算复合赋值运
16、算复合赋值运算复合赋值运算“=”“=”,集成计算和赋值,集成计算和赋值,集成计算和赋值,集成计算和赋值两大功能。两大功能。两大功能。两大功能。可以是任何二元的非布尔型的可以是任何二元的非布尔型的可以是任何二元的非布尔型的可以是任何二元的非布尔型的运算符。如:运算符。如:运算符。如:运算符。如:*=*=,/=/=,%=%=,+=+=,-=,-=,x+=8x=x+8 x+=8x=x+8 a*=b+2a=a*(b+2)a*=b+2a=a*(b+2)2.算术运算n n算术运算作用于整数和浮点数。按操作数个数可算术运算作用于整数和浮点数。按操作数个数可分为一元运算和二元运算。分为一元运算和二元运算。n
17、n一元算术运算符:一元算术运算符:+-+-+-+-。+和和-表示正负号。表示正负号。+和和-分分别称为增别称为增1 1运算和减运算和减1 1运算,有前缀和运算,有前缀和后缀两种形式,如后缀两种形式,如x+,+xx+,+x。二者的区别在于运。二者的区别在于运算和取值的顺序。算和取值的顺序。n n+和和-只只能作用于变量,而不能是字面量或表能作用于变量,而不能是字面量或表达式。如达式。如20+20+,(x+y)-(x+y)-是非法的。是非法的。n n二元算术运算符:二元算术运算符:+-*/%+-*/%。其中。其中“%”“%”是取模是取模运算。运算。x1%x2x1%x2表示求操作数表示求操作数x1x
18、1除以除以x2x2的余数。的余数。算术运算符说明n n如果两个操作数都是整数,则如果两个操作数都是整数,则“/”“/”表示整除,即舍弃小表示整除,即舍弃小数部分,只保留整数部分数部分,只保留整数部分(不是四舍五入不是四舍五入)。如:。如:8/4,9/4,10/48/4,9/4,10/4结果均为结果均为2 2;2/42/4,3/53/5结果都是结果都是0 0。n n对于浮点运算对于浮点运算(至少有一个操作数为浮点数至少有一个操作数为浮点数),a%ba%b的结的结果是除完后剩下的浮点数部分果是除完后剩下的浮点数部分,即即a%ba%b等价于等价于a-a-(int)(a/b)*b)(int)(a/b)
19、*b)。例如:。例如:7.6%2.9=7.6-2.9*2=1.87.6%2.9=7.6-2.9*2=1.8n n在取模运算时,若操作数中有一个是负数,则采取如下在取模运算时,若操作数中有一个是负数,则采取如下规则:先忽略操作数的符号来计算结果,然后取规则:先忽略操作数的符号来计算结果,然后取“%”“%”左左边操作数的符号作为结果的符号。如:边操作数的符号作为结果的符号。如:5%2=1 5%2=1 -5%2=-1 5%-2=1 -5%-2=-1-5%2=-1 5%-2=1 -5%-2=-1n n通过算术运算符将运算对象连接起来的式子,称为通过算术运算符将运算对象连接起来的式子,称为算术算术算术算
20、术表达式表达式表达式表达式。如:。如:3+2,a/(b+c)-d,(x+1)/(y-2)+x*y3+2,a/(b+c)-d,(x+1)/(y-2)+x*y例2.5 算术运算举例:ArithmaticOp.javapublic class ArithmaticOppublic class ArithmaticOp public static void main(String kkj)public static void main(String kkj)int a=5,b=3;int a=5,b=3;int c=+a/b;int c=+a/b;int c2=a-/b;int c2=a-/b;int
21、 c3=a*2%b;int c3=a*2%b;double d=2.5;double d=2.5;double d2=d%3;double d2=d%3;System.out.println(c=+c);System.out.println(c=+c);System.out.println(c2=+c2);System.out.println(c2=+c2);System.out.println(c3=+c3);System.out.println(c3=+c3);System.out.println(d2=+d2);System.out.println(d2=+d2);运行结果为:c=2c2
22、=2c3=1d2=2.53.关系运算n n关系运算又称为比较运算,它的运算结果是一个布尔关系运算又称为比较运算,它的运算结果是一个布尔型值。比较的结果为真型值。比较的结果为真(true)(true)或假或假(false).(false).n n关系运算都是二元运算关系运算都是二元运算:,=,=,5,a5,a=适适用于操作数为整数、浮点数或字符的类型,布尔型只用于操作数为整数、浮点数或字符的类型,布尔型只能用在能用在=或或!=!=比较。比较。n n关系运算符本身连接的表达式不能是关系表达式。如关系运算符本身连接的表达式不能是关系表达式。如 xyzxy2;int x;x=52;n n“=”“=”和
23、和“=”“=”的区分的区分n n关系运算举例关系运算举例例2.6 关系运算举例:RelationOp.javapublic class RelationOppublic class RelationOp public static void main(String app)public static void main(String app)int a=25,b=3;int a=25,b=3;boolean d=ab;boolean d=ab;boolean d1=3.52.6;boolean d1=3.52.6;boolean d2=A=A;boolean d2=A=a*2-b*9;bool
24、ean e=a=a*2-b*9;System.out.println(d=+d);System.out.println(d=+d);System.out.println(d1=+d1);System.out.println(d1=+d1);System.out.println(d2=+d2);System.out.println(d2=+d2);System.out.println(d3=+d3);System.out.println(d3=+d3);System.out.println(e=+e);System.out.println(e=+e);运行结果:d=trued1=falsed2=
25、trued3=truee=true4.逻辑运算n n逻辑运算可以将几个关系表达式或者布尔值连接起来,逻辑运算可以将几个关系表达式或者布尔值连接起来,表示一个较复杂的条件。表示一个较复杂的条件。n n逻辑运算符:逻辑运算符:!(逻辑非逻辑非)!op1 )!op1 一元一元&(&(逻辑与逻辑与)op1&op2 )op1&op2 二元二元|(|(逻辑或逻辑或)op1|op2 )op1|op2 二元二元n n“&”“&”和和“|”“|”又叫做又叫做短路运算符短路运算符短路运算符短路运算符。n n逻辑运算的运算对象必须是布尔值类型的表达式,运逻辑运算的运算对象必须是布尔值类型的表达式,运算结果也是布尔型
26、数据。算结果也是布尔型数据。n n逻辑表达式由逻辑运算符、关系表达式和布尔值组成。逻辑表达式由逻辑运算符、关系表达式和布尔值组成。例如:例如:x=y&ab,!(ab),xy&ab|!(xa),true x=y&ab,!(ab),xy&ab|!(xa),truen n关系运算符和逻辑运算符一起使用,组成复合条件。关系运算符和逻辑运算符一起使用,组成复合条件。例例2.7 2.7 关系运算符和逻辑运算符共同使用的例子。关系运算符和逻辑运算符共同使用的例子。public class RelationAndConditionOppublic class RelationAndConditionOp pu
27、blic static void main(String kjk)public static void main(String kjk)int a=28,b=3;int e=3;int a=28,b=3;int e=3;if(e!=0&a/e5)if(e!=0&a/e5)System.out.println(a/e=+a/e);System.out.println(a/e=+a/e);int f=0;int f=0;/*/*下面不会发生除以零溢出的错误,因为下面不会发生除以零溢出的错误,因为f!=0f!=0为为false,false,所以所以不需要对不需要对a/fa/f进行运算。进行运算。*/
28、*/if(f!=0&a/f5)if(f!=0&a/f5)System.out.println(a/f=+a/f);System.out.println(a/f=+a/f);else System.out.println(f=+f);else System.out.println(f=+f);运行结果为:运行结果为:a/e=9a/e=9f=0f=05.位运算n n位运算符用来对二进制进行操作,其操作数只能为整型或字符型。n n根据操作的类型,可分为:按位运算和移位运算n n按位运算,包括:(按取反),&(位与),|(位或),(位异或);n n移位运算,包括:(带符号右移),(不带符号右移)n n
29、下面分别举例说明。按位运算n n“”-“”-按位取反,对数据的每个二进制位取反按位取反,对数据的每个二进制位取反,属一元运属一元运算。如:算。如:00001111=1111000000001111=11110000n n“&”-“&”-按位与运算。即两个操作数的相应位进行按位与运算。即两个操作数的相应位进行“与与”操作。规则:操作。规则:0&0=0 0&1=0 1&0=0 1&1=1 0&0=0 0&1=0 1&0=0 1&1=1 例如例如:10100001 10100001 10010110 10010110 10010110 10010110&)01000001&)01000001&)11
30、111101&)11111101&)00000010&)00000010 00000001 10010100 00000010 00000001 10010100 00000010 第第种用法用于对某个数中某些特定的位清零种用法用于对某个数中某些特定的位清零(右数第二位右数第二位)第第种用法用于取某个数中某些特定的位种用法用于取某个数中某些特定的位 n n“|”-“|”-按位或运算。两个操作数的相应位进行按位或运算。两个操作数的相应位进行“或或”操操作。作。规则:规则:0|0=0 0|1=1 1|0=1 1|1=1 0|0=0 0|1=1 1|0=1 1|1=1 即只要两个即只要两个相应位中有
31、一个为相应位中有一个为1 1,则该位的结果为,则该位的结果为1 1,否则为,否则为0 0。例如。例如:按位运算n n按位或运算按位或运算“|”“|”可以用来将某个数中某些特定的位置可以用来将某个数中某些特定的位置1 1。10100001 10010110 10100001 10010110|)01000001|)01000001|)00001000|)00001000 11100001 10011110 11100001 10011110n n“”“”按位异或运算按位异或运算,要求有两个操作数。若两个相应位相同,则要求有两个操作数。若两个相应位相同,则该位的结果为该位的结果为0 0,否则结果为
32、,否则结果为1 1,即即 00=0 01=1 10=1 00=0 01=1 10=1 11=0 11=0 例如例如 10100001 01000001=11100000 10100001 01000001=11100000n n“”“”按位异或运算通常有以下两种用法。按位异或运算通常有以下两种用法。用来使某些数中某些特定的位取反。例如用来使某些数中某些特定的位取反。例如 1001011000000010=10010100 (1001011000000010=10010100 (对右数第二位取反对右数第二位取反)通过按位异或运算,可以实现两个数的交换,而不需要使用临时通过按位异或运算,可以实现两
33、个数的交换,而不需要使用临时变量。例如要交还两个整数变量。例如要交还两个整数a,ba,b的值,可通过以下语句实现:的值,可通过以下语句实现:a=11000001,b=01100000;a=11000001,b=01100000;a=ab;/a=ab;/此时此时a=10100001;a=10100001;b=ba;/b=ba;/此时此时b=11000001;b=11000001;a=ab;/a=ab;/此时此时a=01100000;a=01100000;5.移位运算n n“移位移位”,就是将操作数以位为单位,一起向某个方向移动。,就是将操作数以位为单位,一起向某个方向移动。n n一般用于两种情况
34、:按一般用于两种情况:按2 2的乘方进行整数乘法或除法;对的乘方进行整数乘法或除法;对I/OI/O端口进行操作。端口进行操作。n nJavaJava定义了三种移位运算,其操作数和结果的类型都是整数。定义了三种移位运算,其操作数和结果的类型都是整数。左移运算左移运算左移运算左移运算()():形如:形如“xa”,“x,(,又称为算术右移又称为算术右移又称为算术右移又称为算术右移):形如形如“xa”,“xa”,就是就是将将x x各个比特位右移各个比特位右移a a指定的位数,低位右移后舍弃不用,右指定的位数,低位右移后舍弃不用,右移后左边留下的空格填入的是原数的符号位移后左边留下的空格填入的是原数的符
35、号位(正数为正数为0 0,负数,负数为为1)1)。带符号右移带符号右移n n位相当于除以位相当于除以2 2n n。右移实现除法速度较快!。右移实现除法速度较快!不带符号右移运算不带符号右移运算不带符号右移运算不带符号右移运算(,(,又称为逻辑右移又称为逻辑右移又称为逻辑右移又称为逻辑右移):形如形如形如形如“xa”,“xa”,就是将就是将x x各位右移各位右移a a位,低位右移后舍弃,右移后左边留下的位,低位右移后舍弃,右移后左边留下的空位一律填零。空位一律填零。移位运算举例x(x(十进制十进制)x x的二进制的二进制补码表示补码表示x2x2x2x2x230300001111000011110
36、011110000111100000000111000001110000011100000111-17-171110111111101111101111001011110011111011111110110011101100111011注意注意注意注意:在:在JavaJava中,使用补码来表示二进制数,最高位中,使用补码来表示二进制数,最高位为符号位,正数的符号位为为符号位,正数的符号位为0 0,负数的符号位为,负数的符号位为1 1。6.三元运算n n“?:”“?:”也叫条件运算符,也叫条件运算符,JavaJava语言中仅有的一个。语言中仅有的一个。n n一般形式为:一般形式为:表达式表达式1
37、?1?表达式表达式2:2:表达式表达式3 3n n表达式表达式1 1的值必须是布尔型的值必须是布尔型,如果该值为如果该值为true,true,则对则对“表达式表达式2”2”进行求值,并将求值结果作为整个表进行求值,并将求值结果作为整个表达式的值;否则对表达式达式的值;否则对表达式3 3进行求值将其结果作进行求值将其结果作为整个表达式的值。为整个表达式的值。n n表达式表达式2 2和表达式和表达式3 3必须返回相同必须返回相同(或兼容或兼容)的数据的数据类型类型n n例如:例如:result=radio=0?0:num/radio;result=radio=0?0:num/radio;n n一个
38、条件运算符的例子。一个条件运算符的例子。例2.8 一个条件运算符的例子/*/*编程从编程从3 3个整数个整数x,y,zx,y,z中选出最大和最小者中选出最大和最小者*/*/class Max2class Max2 public static void main(String skj)public static void main(String skj)int x=335;int y=212;int z=38;int x=335;int y=212;int z=38;int a,b,max,min;int a,b,max,min;System.out.println(System.out.pri
39、ntln(原来整数的值为:原来整数的值为:x=+x+,y=+y+,z=+z);x=+x+,y=+y+,z=+z);a=xy?x:y;a=xy?x:y;max=(az?a:z);max=(az?a:z);b=xy?x:y;b=xy?x:y;min=(bz?b:z);min=(bz?b:z);System.out.println(System.out.println(最大的元素的值为:最大的元素的值为:+max);+max);System.out.println(System.out.println(最小的元素的值为:最小的元素的值为:+min);+min);运行结果为原来整数的值为:原来整数的值
40、为:X=335,Y=212,Z=38X=335,Y=212,Z=38最大的元素的值为:最大的元素的值为:335335最小的元素的值为:最小的元素的值为:38387.对象运算符instanceofn nInstanceofInstanceof是一种比较运算符,用来判断一个对象在运是一种比较运算符,用来判断一个对象在运行时是否属于某个指定类或其子类的实例,如果是则行时是否属于某个指定类或其子类的实例,如果是则返回返回true,true,否则返回否则返回falsefalse。n n其一般形式为:其一般形式为:对象名对象名对象名对象名 instanceof instanceof 类名类名类名类名 例如
41、:例如:public void method(Employee e)public void method(Employee e)if(e instanceof Manager)if(e instanceof Manager)/do something as a Manager /do something as a Manager else if(e instanceof Contractor)else if(e instanceof Contractor)/do something as a Contractor /do something as a Contractor else else
42、/do something else /do something else 2.3 流程控制语句n n一般来说,一般来说,JavaJava程序中的语句是顺序执行的。程序中的语句是顺序执行的。n n实际上,往往会出现一些特别的要求,比如应根据实际上,往往会出现一些特别的要求,比如应根据某个条件来决定下面进行什么操作,或需要重复地某个条件来决定下面进行什么操作,或需要重复地去做某些事情去做某些事情这就需要用到流程控制语句来控这就需要用到流程控制语句来控制程序中语句的执行顺序,以便更好的完成任务。制程序中语句的执行顺序,以便更好的完成任务。几种流程控制语句几种流程控制语句几种流程控制语句几种流程控制
43、语句语句类型语句类型关键字关键字循环循环while,do-while,forwhile,do-while,for选择选择if-else,switch-caseif-else,switch-case转向控制转向控制break,continue,label:,returnbreak,continue,label:,return异常处理异常处理try-catch-finally,throwtry-catch-finally,throw1循环结构n n循环的作用是反复执行同一块代码直到满足结束循环的作用是反复执行同一块代码直到满足结束条件。现实世界的许多问题都需要用到循环控制,条件。现实世界的许多问题
44、都需要用到循环控制,如累加求和,迭代求根,求工资总和等。如累加求和,迭代求根,求工资总和等。n nJavaJava语言中的循环语句共有三种:语言中的循环语句共有三种:whilewhile语句、语句、do-whiledo-while语句和语句和forfor语句。语句。n n在循环结构中还可以用在循环结构中还可以用continuecontinue语句和语句和breakbreak语句语句来实现循环执行过程中流程的转移。来实现循环执行过程中流程的转移。While语句n n实现实现“当型当型”循环。语法形式为循环。语法形式为 while(while(布尔表达式布尔表达式布尔表达式布尔表达式)循环体循环体
45、循环体循环体例例2.9 2.9 用用whilewhile语句求语句求100100以内所有奇数的和。以内所有奇数的和。Public class WhileDemoPublic class WhileDemo public static void main(String args)public static void main(String args)int I,sum;sum=0;/int I,sum;sum=0;/计数器清零计数器清零 I=1;/I I=1;/I的初值为的初值为1 1 while(I=100)while(I=100)sum+=I;I+=2;sum+=I;I+=2;System.
46、out.println(sum);System.out.println(sum);Do-while语句n n实现实现“直到型直到型”循环。语法形式为循环。语法形式为 dodo 循环体循环体循环体循环体 while(while(布尔表达式布尔表达式布尔表达式布尔表达式)例例2.10 2.10 用用do-whiledo-while语句求语句求100100以内所有奇数的和以内所有奇数的和。Public class DoWhileDemoPublic class DoWhileDemo public static void main(String args)public static void mai
47、n(String args)int I,sum;sum=0;/int I,sum;sum=0;/计数器清零计数器清零 I=1;/I I=1;/I的初值为的初值为1 1 do do sum+=I;I+=2;sum+=I;I+=2;while(I=100)while(I=100)System.out.println(sum);System.out.println(sum);do-while语句 while的不同n nDo-while语句总是先进入循环,然后监测条件,在决定是否继续循环;而while语句实现测试条件,在决定是否进入循环。用do-while语句时,循环体至少执行一次。n n看下面两个特
48、殊例子。例2.11 WhileDemo2.javapublic class WhileDemo2public class WhileDemo2 public static void main(String dfd)public static void main(String dfd)int i=88;int i=88;while(i88)while(i88)System.out.println(Print+i);System.out.println(Print+i);i+;i+;结果没有任何输出结果没有任何输出例2.12 DoWhileDemo2.javapublic class DoWhil
49、eDemo2public class DoWhileDemo2 public static void main(String dfd)public static void main(String dfd)int i=88;int i=88;do do System.out.println(Print+i);System.out.println(Print+i);i+;i+;while(i88);while(i88);运行结果运行结果Print 88Print 88for语句n n也用来实现也用来实现“当型当型”循环。语法形式为循环。语法形式为 forfor(表达式表达式表达式表达式1;1;表达
50、式表达式表达式表达式2;2;表达式表达式表达式表达式3)3)循环体循环体循环体循环体如:如:如:如:for(for(intint num=0;num1000;num+)num=0;num1000;num+)/一段代码一段代码一段代码一段代码 例例2.13 2.13 用用forfor语句求语句求100100以内所有奇数的和。以内所有奇数的和。public class WhileDemopublic class WhileDemo public static void main(String args)public static void main(String args)int sum=0;/i