版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 语句是程序的基本组成单位。语句是程序的基本组成单位。1. 简单语句简单语句 变量说明语句、赋值语句、方法调用语句、空语句等被称为简单语变量说明语句、赋值语句、方法调用语句、空语句等被称为简单语句。句。 在在JavaJava语言中,一个语言中,一个简单语句总是以分号结尾的。简单语句总是以分号结尾的。例:例:int a=1,b; /变量说明语句变量说明语句 b=2; /赋值语句赋值语句 ; /空语句空语句 System.out.print(b); /方法调用语句方法调用语句 2. 复合语句复合语句 复合语句复合语句:由大括号:由大括号“ ” ”括起来的语句。括起来的语句。 复合语句的复合语句的
2、内可放内可放0n0n个语句,每条语句都应该符合个语句,每条语句都应该符合JavaJava语句的语法。语句的语法。例例. if (a0). if (ab) min=b;3.1.1 if 语句语句条条 件件布尔表达式布尔表达式语句语句if的后继语句的后继语句falsetrue 简单简单if语句的执行流程图语句的执行流程图 语法形式:语法形式: if (布尔表达式布尔表达式) 语句语句1 else 语句语句2 注意:注意:条件必须是布尔表达式。语句条件必须是布尔表达式。语句1 1、语句、语句2 2可以是复合可以是复合语句。语句。 例例. if (a0) if (check0) x1=(-b+(flo
3、at)Math.sqrt(check)/(2 x1=(-b+(float)Math.sqrt(check)/(2* *a);a); x2=(-b-(float)Math.sqrt(check)/(2 x2=(-b-(float)Math.sqrt(check)/(2* *a);a); System.out.println(x1=+x1); System.out.println(x1=+x1); System.out.println(x2=+x2); System.out.println(x2=+x2); else else / /* *请自己填写请自己填写* */ / 练习:练习: 编写一程序
4、,运行后从键盘输入二个整数,输出编写一程序,运行后从键盘输入二个整数,输出 其中的最小数。其中的最小数。课堂练习:求最小数课堂练习:求最小数import java.io.import java.io.* *; ; public class Minpublic class Minpublic static void mainpublic static void main(String args)(String args) throws throws IOExceptionIOException byte buf=new byte20; byte buf=new byte20; String st
5、r ; int a, b, min;String str ; int a, b, min; System.out.println(System.out.println(请输入二个整数:请输入二个整数:);); System.in.read(buf);System.in.read(buf); /从键盘读一数字串存于从键盘读一数字串存于bufbuf中中str=new String(buf);str=new String(buf); /buf /buf 转换成字符串转换成字符串 a=Integer.parseInt(str.trim();a=Integer.parseInt(str.trim();
6、/ /数字串转换成整数数字串转换成整数System.in.read(buf); str=new String(buf);System.in.read(buf); str=new String(buf); b=Integer.parseInt(str.trim();b=Integer.parseInt(str.trim(); min=a;min=a;if (minb) min=b;if (minb) min=b;System.out.println(System.out.println(最小数是最小数是+min);+min);3.1.2 switch 语句语句 switchswitch语句根据测
7、试表达式的结果来执行多个可能操作中的一个,语句根据测试表达式的结果来执行多个可能操作中的一个,它的语法形式如下:它的语法形式如下:switchswitch语句的流程如下所示。语句的流程如下所示。 switch( switch(测试表达式测试表达式) ) case case 常量常量1 1:语句块:语句块1 1 break; break; case case 常量常量2 2:语句块:语句块2 2 break; break; case case 常量常量n n:语句块:语句块n n break; break; default: default: 语句块语句块n+1 n+1 测试表达式语句块1bre
8、ak语句块2breakbreak语句块n语句块n+1后继语句常量2defaultswitch语句的流程图常量1常量n switchswitch语句中的每个语句中的每个“case“case常量常量:” :” 称为一个称为一个casecase子句,代表一个子句,代表一个casecase分支的入口。分支的入口。 switch switch语句的注意点如下:语句的注意点如下:(1 1)测试表达式必须是)测试表达式必须是bytebyte、charchar、shortshort、intint类型的表达式类型的表达式, ,而而不能不能使用浮点类型或使用浮点类型或longlong类型类型, ,也也不能为一个字
9、符串不能为一个字符串。(2 2)switchswitch语句将测试表达式的值依次与每个语句将测试表达式的值依次与每个casecase子句中的常量值相子句中的常量值相比较。如果匹配成功,则执行该比较。如果匹配成功,则执行该casecase子句中常量值后的语句,直到遇到子句中常量值后的语句,直到遇到breakbreak语句为止。语句为止。(3 3)casecase子句中常量的类型必须与测试表达式的类型相容,而且每个子句中常量的类型必须与测试表达式的类型相容,而且每个casecase子句中常量的值必须是不同的。常量也可以是常量表达式子句中常量的值必须是不同的。常量也可以是常量表达式( (不含变量、不
10、含变量、方法的表达式方法的表达式) )。(4 4)defaultdefault子句是可选的,当测试表达式的值与任一子句是可选的,当测试表达式的值与任一casecase子句中的值都子句中的值都不匹配时,就执行不匹配时,就执行defaultdefault后的语句。如果表达式的值与任一后的语句。如果表达式的值与任一casecase子句中的子句中的值都不匹配且没有值都不匹配且没有defaultdefault子句,则程序不执行任何操作,而是直接跳出子句,则程序不执行任何操作,而是直接跳出switchswitch语句,进入后续程序段的执行。语句,进入后续程序段的执行。 (5 5)breakbreak语句用
11、来在执行完一个语句用来在执行完一个casecase分支后,使程序跳出分支后,使程序跳出switchswitch语句,语句,执行执行switchswitch语句的后续语句。因为语句的后续语句。因为casecase子句只是起到一个标号的作用,用子句只是起到一个标号的作用,用来查找匹配的入口,然后从此处开始执行,对后面的来查找匹配的入口,然后从此处开始执行,对后面的casecase子句的值不再进子句的值不再进行比较,而是直接执行其后的语句。因此一般情况下,每个行比较,而是直接执行其后的语句。因此一般情况下,每个casecase分支后,分支后,要用要用breakbreak来终止后面的来终止后面的cas
12、ecase分支语句的执行。分支语句的执行。(6 6)casecase分支中包括多个执行语句时,可以不用花括号括起。分支中包括多个执行语句时,可以不用花括号括起。(7 7)通过)通过if-elseif-else语句可以实现语句可以实现switchswitch语句所有的功能。但通常使用语句所有的功能。但通常使用switchswitch语句更简练,且可读性强,程序的执行效率也高。语句更简练,且可读性强,程序的执行效率也高。(8 8)if-elseif-else语句可以基于一个范围内的值或一个条件来进行不同的操语句可以基于一个范围内的值或一个条件来进行不同的操作,但作,但switchswitch语句中
13、的每个语句中的每个casecase子句都必须对应一个单值。子句都必须对应一个单值。class SwitchDemoclass SwitchDemo public static void public static void mainmain(String args) (String args) int month=7; int month=7; String season; String season; switch (month) switch (month) case 12: case 12: case 1: case 1: case 2: case 2: season= season=冬
14、季冬季; ; break; break; case 3: case 3: case 4: case 4: case 5: case 5: season= season=春季春季 ; break; break; case 6: case 6: case 7: case 7: case 8: season= case 8: season=夏季夏季; ; break; break; case 9: case 9: case 10: case 10: case 11: season= case 11: season=秋季秋季; ; break; break; default: season= defa
15、ult: season=错错!;!; System.out.println System.out.println(month+(month+月是月是+season);+season); ss 例例. . 用用switchswitch语句判断一个月份属于一年中哪个季节语句判断一个月份属于一年中哪个季节( (春春、夏夏、秋秋、冬冬) ) (方法一)(方法一) 循环语句的作用是反复执行同一段代码直到满足结束条循环语句的作用是反复执行同一段代码直到满足结束条件。许多问题中需要用到循环控制。例如累加、累乘等。件。许多问题中需要用到循环控制。例如累加、累乘等。 Java循环语句有循环语句有while、do
16、-while和和for三种。三种。 3.2 循环语句循环语句3.2.1 3.2.2 3.2.3 u while while语句形式如下:语句形式如下: while (while (布尔表达式布尔表达式) ) 语句语句 whilewhile语句执行的过程为:执行语句执行的过程为:执行whilewhile语句时,首先判断布尔表语句时,首先判断布尔表达式的值,当布尔表达式的值为达式的值,当布尔表达式的值为truetrue,则执行循环体,然后再判断,则执行循环体,然后再判断条件,直到布尔表达式的值为条件,直到布尔表达式的值为falsefalse,停止执行语句。,停止执行语句。 使用使用whilewhi
17、le语句应注意以下两点:语句应注意以下两点:(1 1)该语句是先判断后执行,若一开始条件就不成立,就不执行)该语句是先判断后执行,若一开始条件就不成立,就不执行循环体。循环体。(2 2)在循环体内一定要有改变条件的语句,否则是死循环。)在循环体内一定要有改变条件的语句,否则是死循环。whilewhile语句的流程图如下所示。语句的流程图如下所示。3.2.1 while 语句语句布尔表达式布尔表达式循环体循环体falsetrue while语句流程图class sum public static void main(String args) int n=100; /循环总数循环总数n=100 i
18、nt i=1; /循环次数,初值为循环次数,初值为 float s=0; /和和s为实型为实型 while (i=n) /循环条件循环条件,循环总数循环总数100 s=s+1.0f/i; /s增加增加1/i, 1.0f表示是表示是float型型 i+; /循环次数加循环次数加 System.out.println(s = +s); 例例. . 用用whilewhile循环语句计算循环语句计算s=1+1/2+1/3+1/100s=1+1/2+1/3+1/100。 JavaJava还提供了另一个与还提供了另一个与whilewhile语句类似的语句语句类似的语句do-do-whilewhile语句。
19、语句。do-whiledo-while语句的语法形式如下:语句的语法形式如下: dodo 语句语句 while ( while (布尔表达式布尔表达式); ); do-whiledo-while语句执行的过程为:先执行一次循环体中的语句,然后测语句执行的过程为:先执行一次循环体中的语句,然后测试布尔表达式的值,如果布表达式的值为真,那就继续执行循环体,试布尔表达式的值,如果布表达式的值为真,那就继续执行循环体,do-whiledo-while语句将不断地测试布尔表达式的值并执行循环体中的内容,语句将不断地测试布尔表达式的值并执行循环体中的内容,直到布尔表达式的值为假为止。直到布尔表达式的值为假
20、为止。 do-whiledo-while语句的流程图如下所示。语句的流程图如下所示。3.2.2 do-while 语句语句布尔表达式布尔表达式循环体循环体truefalseDo- while语句流程图 do-whiledo-while语句和语句和whilewhile语句的不同之处是语句的不同之处是: do-while: do-while语句总是先进入循环,语句总是先进入循环,执行一次循环体后才检测循环条件,以决定是否继续循环,执行一次循环体后才检测循环条件,以决定是否继续循环,而而while语句是语句是先测试条件,再决定是否进入循环。所以,用先测试条件,再决定是否进入循环。所以,用do-whi
21、le语句时,循环体至语句时,循环体至少执行一次。少执行一次。 例例. . 用用do-whiledo-while循环语句计算循环语句计算s=1+1/2+1/3+1/4+1/100s=1+1/2+1/3+1/4+1/100。 class sum class sum public static voidpublic static void main main(String args)(String args) int i=1; int i=1; /循环次数,初值为循环次数,初值为 float s=0; float s=0; /和和s s为实型为实型 do do /循环条件循环条件 s=s+1.0f/
22、i; s=s+1.0f/i; /s/s增加增加1/i,1.0f1/i,1.0f表示是表示是floatfloat型型 i+; i+; /循环次数加循环次数加 while (i=100); while (i=100); /要循环要循环100100次次 System.out.println(s= +s);System.out.println(s= +s); forfor语句是循环的另一种表示形式。语句是循环的另一种表示形式。forfor语句的语法形式为:语句的语法形式为: forfor(表达式(表达式1 1;表达式;表达式2 2;表达式;表达式3 3) 语句语句 forfor是是forfor语句的关
23、键字,语句为语句的关键字,语句为forfor语句的循环体,若有多个语句,语句的循环体,若有多个语句,需构成复合语句。需构成复合语句。 for for语句中循环控制变量必须是有序类型,常用的有整型、字符型、语句中循环控制变量必须是有序类型,常用的有整型、字符型、布尔型。循环控制变量初值和终值通常是与控制变量类型相一致的一个布尔型。循环控制变量初值和终值通常是与控制变量类型相一致的一个常量,也可以是表达式。循环次数由初值和终值决定。执行过程:常量,也可以是表达式。循环次数由初值和终值决定。执行过程:(1 1)按表达式)按表达式1 1将初值赋给循环控制变量。将初值赋给循环控制变量。(2 2)按表达式
24、)按表达式2 2判断循环是否成立,即判断控制变量的值判断循环是否成立,即判断控制变量的值3.2.3 for 语句语句 是否越过终值(未越过终值为条件成立,越过终值为条件不是否越过终值(未越过终值为条件成立,越过终值为条件不成立),若条件不成立、转步骤(成立),若条件不成立、转步骤(6 6)。)。 (3 3)若条件成立,则执行循环体。)若条件成立,则执行循环体。(4 4)按表达式)按表达式3 3修改控制变量。对于递增型为原控制变量值的后续;对修改控制变量。对于递增型为原控制变量值的后续;对于递减型为原控制变量值的前导。于递减型为原控制变量值的前导。(5 5)返回步骤()返回步骤(2 2)。()。
25、(6 6)结束循环。)结束循环。 求解表达式求解表达式1表达式表达式2循环体循环体求解表达式求解表达式3for语句的下一语句语句的下一语句falsetruefor语句的流程图例例. . 求求FibonacciFibonacci数列的前数列的前4040个数项。个数项。 FibonacciFibonacci数列:数列:1 1,1 1,2 2,3 3,5 5,8 8,1313,2121,3434,从数列看到:从数列看到: F1=1 (n=1) F1=1 (n=1) F2=1 (n=2) F2=1 (n=2) Fn=F Fn=Fn-1n-1+F+Fn-2n-2 (n3) (n3) forfor语句使用
26、的一些技巧:语句使用的一些技巧: 有时,有时,forfor语句在表达式语句在表达式1 1和表达式和表达式3 3的位置上需要包含多个表达式,的位置上需要包含多个表达式,这时可使用这时可使用JavaJava提供的逗号运算符来实现。提供的逗号运算符来实现。 逗号运算符是用逗号逗号运算符是用逗号“,” ,” 分隔多个表达式分隔多个表达式, , 被看作一个表达式。被看作一个表达式。这样这样就可以在只能放一个表达式的地方放任意多个表达式,只须用逗号将它们就可以在只能放一个表达式的地方放任意多个表达式,只须用逗号将它们分隔开。如:分隔开。如: for for ( ( i=1, j=10i=1, j=10;i
27、jij;i+, j-i+, j- ) ) 表达式表达式1 1、表达式、表达式2 2及表达式及表达式3 3都可以为空语句都可以为空语句( (但分号不能省略但分号不能省略) ),三,三者均为空的时候,相当于一个无限循环。如:者均为空的时候,相当于一个无限循环。如: for( ; ; ) for( ; ; ) 注意点注意点: : 由于由于JavaJava语句是用分号结束的,一个容易犯的错误是在语句是用分号结束的,一个容易犯的错误是在forfor语语句的圆括号后面加了一个不应有的分号。句的圆括号后面加了一个不应有的分号。例如:下面的程序是想要计算:例如:下面的程序是想要计算:1+2+.+991+2+.
28、+99 在上例中,分号被放在循环体的前边,相当于在上例中,分号被放在循环体的前边,相当于forfor语句的循环体为空语语句的循环体为空语句,其结果是句,其结果是forfor循环体什么都不处理。此程序的编译不会出任何错误,循环体什么都不处理。此程序的编译不会出任何错误,但当它运行时并不产生预期的但当它运行时并不产生预期的结果。结果。运行上面这个程序会得到如下输出结果:运行上面这个程序会得到如下输出结果: value=100value=100 一般来说,在循环次数预知的情况下,用一般来说,在循环次数预知的情况下,用forfor语句比较方便,而语句比较方便,而whilewhile语语句和句和do-w
29、hiledo-while语句比较适合于循环次数不能预先确定的情况。语句比较适合于循环次数不能预先确定的情况。循环嵌套 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多重循环。上述三种循环(嵌的循环中还可以嵌套循环,这就是多重循环。上述三种循环(whilewhile循环,循环,do-whiledo-while循环和循环和forfor循环)语句之间可以相互嵌套使用。循环)语句之间可以相互嵌套使用。 例例. . 打印下面的数字图案(每行打打印下面的数字图案(每行打5 5个数字,每行各列数的值等于第个
30、数字,每行各列数的值等于第一列数乘自己所在列号):一列数乘自己所在列号): 1 2 3 4 5 1 2 3 4 5 2 4 6 8 10 2 4 6 8 10 3 6 9 12 15 3 6 9 12 15 4 8 12 16 20 4 8 12 16 20 5 10 15 20 25 5 10 15 20 25 u 循环嵌套循环嵌套public class Loop_Looppublic class Loop_Looppublic static void public static void mainmain(String args)(String args) int I,J,K; int
31、I,J,K; /I/I表示行号表示行号,J,J表示列号表示列号,K,K存临时计算的值存临时计算的值 for (I=1;I=5;I+ ) for (I=1;I=5;I+ ) for ( J=1;J=5;J+) for ( J=1;J=5;J+) K=I K=I* *J; System.out.print(K+ ); J; System.out.print(K+ ); System.out.println(); System.out.println(); /每打每打5 5列换行列换行 例例. . 百鸡问题。百鸡问题。 已知公鸡已知公鸡5 5元元1 1只,母鸡只,母鸡3 3元一只,小鸡元一只,小鸡1
32、 1元元3 3只,要求用只,要求用100100元刚好买元刚好买100100只鸡,问有多少种采购方案。只鸡,问有多少种采购方案。 分析分析: : 设变量设变量I I、J J、K K分别代表公鸡数、母鸡数及小鸡数,则应满足分别代表公鸡数、母鸡数及小鸡数,则应满足下列一些条件下列一些条件: : I+J+K=100( I+J+K=100(只只) ),I,J,KI,J,K 0 0; ; 5I+3J+K/3=100 5I+3J+K/3=100(元)(元); ; 若用若用100100元全部买公鸡,最多只能买元全部买公鸡,最多只能买2020只只, , 所以所以I20;I20;同样地母鸡最多同样地母鸡最多只能买
33、只能买3333只,所以只,所以J33; J33; 而小鸡数目就是而小鸡数目就是100-I-J;100-I-J; 根据以上分析,可编程如下:根据以上分析,可编程如下:例例. .百鸡问题百鸡问题public class Loop_Loop public static void main(String args) int I,J,K; System.out.println(公鸡公鸡 母鸡母鸡 小鸡小鸡); for (I=0; I=20; I+ ) for ( J=0; J=33; J+) K=100-I-J; if (5*I+3*J+K/3.0=100) /注意注意“K/3.0” System.ou
34、t.println(I+ +J+ +K); 循环语句正常结束是在循环条件表达式的值变为循环语句正常结束是在循环条件表达式的值变为false的的 时候,时候,但有时即使测试的条件为但有时即使测试的条件为true,也希望循环立即终止,这时可以用,也希望循环立即终止,这时可以用跳转语句跳转语句break或或continue语句实现。语句实现。continue语句只能用于循语句只能用于循环语句中。环语句中。break可用于可用于switch语句中,亦可用于循环语句中语句中,亦可用于循环语句中 注意:注意:Java中不支持中不支持goto语句。语句。 3.3 跳转语句跳转语句3.3.1 3.3.2 br
35、eakbreak语句的一般语法格式为:语句的一般语法格式为: break break 标号标号 ; 其中,用其中,用“ ” ”括起的标号部分是可选的。括起的标号部分是可选的。 1.1.不带标号的情况不带标号的情况 此时,此时,breakbreak语句的功能是语句的功能是终止终止breakbreak所在的循环语句所在的循环语句, ,转去执行转去执行其后的第一条语句其后的第一条语句。 对于不带标号的对于不带标号的breakbreak语句,在执行时有两个特点:语句,在执行时有两个特点: 1) 1) 在有多重循环时,它只能使循环从本层的循环跳出来;在有多重循环时,它只能使循环从本层的循环跳出来; 2)
36、 2) 跳出循环后转移到本层循环的下一个语句。跳出循环后转移到本层循环的下一个语句。3.3.1 break 语句语句public class breakout public class breakout public static void main(String args) public static void main(String args) throws IOException int I,J,K; char ch= ; int I,J,K; char ch= ; for (I=1;I=1;I+ ) / for (I=1;I=1;I+ ) /最外层循环最外层循环 for ( J=1;J
37、=2;J+) / for ( J=1;J=2;J+) /第二层循环第二层循环 for ( K=1;K=2;K+) / for ( K=1;K=2;K+) /内层循环内层循环 ch=(char)System.in.read(); ch=(char)System.in.read(); if (ch=c) break ; / if (ch=c) break ; /结束内层循环语句结束内层循环语句 System.out.println(333); System.out.println(333); if (ch=b) break ; / if (ch=b) break ; /结束第二层循环语句结束第二层
38、循环语句 System.out.println(222); System.out.println(222); if (ch=a) break ; / if (ch=a) break ; /结束最外层循环语句结束最外层循环语句 System.out.println(111); System.out.println(111); 例例. .不带标号的不带标号的breakbreak语句语句2.2.带标号的情况带标号的情况 标号就是加在语句前面的一个合法的标识符,其后跟一个冒号。如下标号就是加在语句前面的一个合法的标识符,其后跟一个冒号。如下所示:所示: 标号:语句标号:语句 标号只是起到对语句标识的作
39、用。标号只是起到对语句标识的作用。 带标号的带标号的breakbreak语句的功能是使程序语句的功能是使程序结束标号指明的外层循环结束标号指明的外层循环语句,执行该外层循环语句的后继语句。语句,执行该外层循环语句的后继语句。标号应该定义在标号应该定义在( (要结要结束的束的) )外层循环语句的开始处。外层循环语句的开始处。 带标号的带标号的breakbreak语句的一种典型用法就是实现语句的一种典型用法就是实现breakbreak语句所在的循环语句所在的循环的外层循环语句(从内部直接跳出来)。的外层循环语句(从内部直接跳出来)。 例如:例如:import java.io.*;class bre
40、akto_A public static void main(String args) throws IOException int i,j; char ch= ; A: /标号标号A, 外层循环外层循环 for (i=1;i=2;i+ ) for ( j=1;j=1;j+) /内层循环内层循环 ch = (char) System.in.read(); if (ch = a) break A; /结束结束A对应的循环语句对应的循环语句(外层循环外层循环) System.out.println(222); System.out.println(111); continuecontinue语句只
41、能在循环语句中使用。它和语句只能在循环语句中使用。它和breakbreak语句的区别是语句的区别是continuecontinue语句只结束所在循环语句的本次循环,而不是终止整个循环语语句只结束所在循环语句的本次循环,而不是终止整个循环语句的执行;而句的执行;而breakbreak语句则是结束整个循环语句的执行。语句则是结束整个循环语句的执行。continuecontinue语句语句的一般语法格式为:的一般语法格式为: continue continue 标号标号 ; 其中,用其中,用“ ”“ ”括起的标号部分是可选的。括起的标号部分是可选的。1.1.不带标号的使用情况不带标号的使用情况 此时
42、,此时,continuecontinue语句用来结束所在循环语句的本次循环,即跳过循语句用来结束所在循环语句的本次循环,即跳过循环体中环体中continuecontinue语句后面的语句,回到循环体的条件测试部分继续执行。语句后面的语句,回到循环体的条件测试部分继续执行。 不带标号不带标号continuecontinue语句和不带标号的语句和不带标号的breakbreak语句类似,只能对所在一语句类似,只能对所在一层的循环起作用。层的循环起作用。3.3.2 continue 语句语句public class continueto public class continueto public s
43、tatic void main(String args) public static void main(String args) throws IOException int I,J; char ch= ; int I,J; char ch= ; for (I=1;I=1;I+ ) / for (I=1;I=1;I+ ) /外层循环外层循环 for (J=1;J=2;J+) / for (J=1;J=2;J+) /内层循环内层循环 ch=(char)System.in.read(); ch=(char)System.in.read(); if (ch=b) continue; / if (c
44、h=b) continue; /结束内层循环的本次循环结束内层循环的本次循环 System.out.println( System.out.println( 没有结束内循环!没有结束内循环! ); ); if (ch=a) continue; / if (ch=a) continue; /结束外层循环的本次循环结束外层循环的本次循环 System.out.println( System.out.println( 没有结束外循环!没有结束外循环! ); ); 例:不带标号的例:不带标号的continuecontinue语句语句2.2.带标号的使用情况带标号的使用情况 此时,此时,continue
45、continue语句跳过标号所指的循环语句所有余下语句跳过标号所指的循环语句所有余下部分语句,回到标号所指循环语句块的条件测试部分继续执部分语句,回到标号所指循环语句块的条件测试部分继续执行。行。注意标号应该定义在注意标号应该定义在外层循环语句的开始处。外层循环语句的开始处。 下面是一个使用带标号的下面是一个使用带标号的continuecontinue语句的例子。语句的例子。import java.io.*;class continue_A public static void main(String args) throws IOException int i,j; char ch= ; A
46、: /标号标号A, 外层循环外层循环 for (i=1;i=2;i+ ) for ( j=1;j=1;j+) /内层循环内层循环 ch = (char) System.in.read(); if (ch = a) continue A; /结束结束A对应的循环语句的本次循环对应的循环语句的本次循环 System.out.println(本次内循环正常结束!本次内循环正常结束!); System.out.println(本次外循环正常结束!本次外循环正常结束! ); n1 n2 数组是相同类型的数据元素按顺序组成的一种复合数据数组是相同类型的数据元素按顺序组成的一种复合数据类型,元素在数组中的相
47、对位置由下标来指明。数组中的每个类型,元素在数组中的相对位置由下标来指明。数组中的每个元素通过数组名加下标进行引用。数组作为一种特殊的数据类元素通过数组名加下标进行引用。数组作为一种特殊的数据类型具有以下特点:型具有以下特点: (1) (1) 一个数组中所有的元素应该是同一类型;一个数组中所有的元素应该是同一类型; (2) (2) 数组中的元素是有顺序的;数组中的元素是有顺序的; (3) (3) 数组中的一个元素通过数组名和数组下标来确定。数组中的一个元素通过数组名和数组下标来确定。数数 组组1) 1) 一维数组的说明与构造一维数组的说明与构造 与与C+C+中不同的是,中不同的是,JavaJa
48、va中数组要用中数组要用newnew操作符实例化才可使用。所以操作符实例化才可使用。所以建立一个数组需要两步:建立一个数组需要两步: 声明数组声明数组 实例化实例化 格式:格式: 类型类型 数组名数组名 ; (或(或: : 类型类型 数组名数组名;) 数组名数组名 = new = new 类型类型 数组长度数组长度 ; 说明:说明: 第一行声明一个数组名第一行声明一个数组名,并指明数组类型并指明数组类型(可任何类型)和维数和维数; 第二行使用第二行使用newnew操作符构造数组并初始化操作符构造数组并初始化( (缺省值缺省值) ),即为数组元素分配存,即为数组元素分配存储空间,并为每个数组元素
49、都赋予一个初值。储空间,并为每个数组元素都赋予一个初值。1.一维数组一维数组(可含有变量) 上面的第二步实例化可以暂时不做,到需要时再完成。也可将上面的上面的第二步实例化可以暂时不做,到需要时再完成。也可将上面的二步合并为一步:二步合并为一步: 类型类型 数组名数组名 = new = new 类型类型 数组长度数组长度 ;例:例: int list ;list ; /声明一个整型数组声明一个整型数组 list = new int3; /为上面声明的数组分配为上面声明的数组分配3 3个整数元素个整数元素 /的内存空间,并使每个元素初值为的内存空间,并使每个元素初值为0 0 合并为一步:合并为一步
50、: int list = new int3; 2) 2) 数组的初始化数组的初始化 数组初始化就是为数组元素指定初始值。通常在构造数组数组初始化就是为数组元素指定初始值。通常在构造数组时,时,JaveJave会使每个数组元素初始化为一个默认值。但在许多会使每个数组元素初始化为一个默认值。但在许多情况下,并不希望数组的初值为默认值,此时,就需要用赋情况下,并不希望数组的初值为默认值,此时,就需要用赋值语句来对数组进行初始化。值语句来对数组进行初始化。 数组的初始化方式有两种:数组的初始化方式有两种: 一、像初始化简单类型一样自动初始化数组一、像初始化简单类型一样自动初始化数组( (不用不用new
51、)new),即在说明数组的同时进行初始化即在说明数组的同时进行初始化( (称为静态初始化称为静态初始化) ); 二、仅用二、仅用newnew创建数组,让它取缺省值,到以后再为元素创建数组,让它取缺省值,到以后再为元素赋值赋值( (称为动态初始化称为动态初始化) )。 例:例:int a =1,2,3,4,5; /int a =1,2,3,4,5; /静态初始化静态初始化 int list = new int3;int list = new int3; /动态初始化动态初始化 上面的第一个语句声明并创建了数组上面的第一个语句声明并创建了数组a a,并且为数组每个元素赋初,并且为数组每个元素赋初值
52、,结果为:值,结果为: a0=1,a1=2,a2,=3,a3=4,a4=5a0=1,a1=2,a2,=3,a3=4,a4=5 上面的第二个语句仅声明并创建了数组上面的第二个语句仅声明并创建了数组a a,并未给数组赋初值,并未给数组赋初值, 由由Jave为数组元素默认初始化,于是得到三个元素并且都有初值:为数组元素默认初始化,于是得到三个元素并且都有初值: list0=0, 0=0, list1=0, 1=0, list2=02=0 注意:注意:“”中所有数据的类型必须与数组的类型相同中所有数据的类型必须与数组的类型相同 3) 3) 数组元素的使用数组元素的使用 数组被实例化后,就可以在程序中像
53、使用任何变量一样来使用数组元数组被实例化后,就可以在程序中像使用任何变量一样来使用数组元素,即可以在任何允许使用变量的地方使用数组元素。数组元素的标识素,即可以在任何允许使用变量的地方使用数组元素。数组元素的标识方式为:方式为: 数组名数组名 下标下标 例:例: a3a3、bibi、cici* *55 下标的取值范围是从下标的取值范围是从0 0开始,一直到数组的长度减开始,一直到数组的长度减1 1。对于上面例子中。对于上面例子中的的listlist数组来说,它有数组来说,它有3 3个元素,分别为:个元素,分别为: list0 list0、list1list1、list2list2(注意:不存在
54、(注意:不存在list3list3)注意:注意: 1.1.下标只能为下标只能为bytebyte、shortshort、intint或或charchar类型类型,不能为不能为longlong; 2.Java2.Java在程序编译时并不对数组下标进行越界检查在程序编译时并不对数组下标进行越界检查, ,但在运行时会对数但在运行时会对数组下标进行越界检查,以保证安全性。组下标进行越界检查,以保证安全性。 JavaJava中的数组实际是中的数组实际是ArrayArray类的一个对象,定义一个数组实际就是创类的一个对象,定义一个数组实际就是创建建ArrayArray类的一个对象。该类中还有一些属性和方法供
55、数组使用。如对于类的一个对象。该类中还有一些属性和方法供数组使用。如对于每个数组都有一个属性:每个数组都有一个属性:lengthlength,它指明数组的长度,它指明数组的长度( (即元素个数即元素个数) ),由程,由程序自动计算。例如,序自动计算。例如,list.lengthlist.length指明了数组指明了数组listlist的长度。的长度。 JavaJava中的数组还可利用数组名来互相赋值,但要注意,这种赋值实际中的数组还可利用数组名来互相赋值,但要注意,这种赋值实际是定义一个别名,即是同一数组的不同名字的引用。例如:是定义一个别名,即是同一数组的不同名字的引用。例如: int a=
56、2,4,6, b; b=a; System.out.println(b1); /输出输出4 b1=7; System.out.println(a1); /输出输出7 4) 4) 一维数组应用示例一维数组应用示例例例. . 编写一个程序,在其中建立一个有编写一个程序,在其中建立一个有1010个整数的数个整数的数组,运行后从键盘输入组,运行后从键盘输入1010个整数放入数组,然后输出个整数放入数组,然后输出其中的最大数。其中的最大数。 import java.io.*; public class Array1public static void main(String args) throws I
57、OException int i, max, a=new int10; byte buf=new byte20; String str; 程序如下:程序如下: System.out.println(请输入请输入10个数:个数:); for(i=0; i=9; i+) /输入输入10个数个数, 以回车分隔以回车分隔 System.in.read(buf); str=new String(buf); ai=Integer.parseInt(str.trim(); max=a0; for(i=1; i=9; i+) /找最大数找最大数 if(maxai) max=ai; System.out.pri
58、ntln(最大数是最大数是+max); 与与C+C+中类似,在中类似,在JavaJava中,当一维数组中的类型又是一个一维数组时,中,当一维数组中的类型又是一个一维数组时,就构成了二维数组,以此类推,可构成更高维的数组。所以,多维数组是就构成了二维数组,以此类推,可构成更高维的数组。所以,多维数组是通过对一维数组的嵌套声明来实现的。通过对一维数组的嵌套声明来实现的。 多维数组与一维数组一样,需要声明并实例化后才可使用。下面主要以多维数组与一维数组一样,需要声明并实例化后才可使用。下面主要以二维数组为例来说明用法。二维数组为例来说明用法。1) 1) 二维数组的说明与创建二维数组的说明与创建 二维
59、数组说明的格式为:二维数组说明的格式为: 类型类型 数组名数组名 ;( (或或 类型类型 数组名;数组名;) ) 例如:例如: intint intArray intArray ; 与一维数组一样,此时还没有为数组元素分配内存空间,还需要用与一维数组一样,此时还没有为数组元素分配内存空间,还需要用newnew关键字来创建数组,然后才可以使用该数组的每个元素。关键字来创建数组,然后才可以使用该数组的每个元素。2. 多维数组多维数组 对二维数组来说,分配内存空间有下面几种方法。对二维数组来说,分配内存空间有下面几种方法。 直接为每一维分配空间,如:直接为每一维分配空间,如: int a = new
60、 int23int a = new int23; 该语句创建了一个二维数组该语句创建了一个二维数组a a,其较高一维含两个元素,每个元素为由,其较高一维含两个元素,每个元素为由3 3个整型数构成的一维整型数组。如下所示:个整型数构成的一维整型数组。如下所示:a00 a01 a02 a10 a11 a12 从最高维开始,分别为每一维分配空间,如:从最高维开始,分别为每一维分配空间,如: b00 b01 b02 b10 b11 b12 b13 b14 int b = new int2 int b = new int2 ;/最高维含最高维含2 2个元素,每个元素,每 /个元素为一个整型数组个元素为一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度工业设备安装与调试服务合同3篇
- 二零二五版快递企业快递物品安全防护合同大全3篇
- 2025年度城市综合体门头广告品牌形象改造合同3篇
- 2025年度拆迁安置房交易全程跟踪服务合同协议3篇
- 个人消费性借款合同(2024版)9篇
- 二零二五年度可再生能源发电特许经营合作协议合同范本
- 二零二五年度医疗健康信息化运维保障合同2篇
- 2025版商业物业安全责任书(含应急预案)3篇
- 2025年度个性化产后恢复与新生儿护理个人月嫂服务协议4篇
- 2025年度个人退伙经营协议书(房地产租赁合作版)4篇
- 《装配式蒸压加气混凝土外墙板保温系统构造》中
- T-CSTM 01124-2024 油气管道工程用工厂预制袖管三通
- 2019版新人教版高中英语必修+选择性必修共7册词汇表汇总(带音标)
- 新译林版高中英语必修二全册短语汇总
- 基于自适应神经网络模糊推理系统的游客规模预测研究
- 河道保洁服务投标方案(完整技术标)
- 品管圈(QCC)案例-缩短接台手术送手术时间
- 精神科病程记录
- 阅读理解特训卷-英语四年级上册译林版三起含答案
- 清华大学考博英语历年真题详解
- 人教版三年级上册口算题(全册完整20份 )
评论
0/150
提交评论