全面掌握Java中的循环控制语句与条件判断语句的使用
循环控制
可能存在一种情况,当我们需要执行的代码块数次,通常被称为一个循环。
Java有非常灵活的三循环机制。可以使用以下三种循环之一:
- while循环
- do...while循环
- for循环
截至Java5,对增强的for循环进行了介绍。这主要是用于数组。
while循环
while循环是一个控制结构,可以重复的特定任务次数。
语法
while循环的语法是:
while(Boolean_expression) { //Statements }
在执行时,如果布尔表达式的结果为真,则循环中的动作将被执行。只要该表达式的结果为真,执行将继续下去。
在这里,while循环的关键点是循环可能不会永远运行。当表达式进行测试,结果为假,循环体将被跳过,在while循环之后的第一个语句将被执行。
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=10; while(x<20){ System.out.print("valueofx:"+x); x++; System.out.print("\n"); } } }
这将产生以下结果:
valueofx:10 valueofx:11 valueofx:12 valueofx:13 valueofx:14 valueofx:15 valueofx:16 valueofx:17 valueofx:18 valueofx:19
do...while循环
do...while循环类似于while循环,不同的是一个do...while循环是保证至少执行一次。
语法
do...while循环的语法是:
do { //Statements }while(Boolean_expression);
请注意,布尔表达式出现在循环的结尾,所以在循环中的语句执行前一次布尔测试。
如果布尔表达式为真,控制流跳回,并且在循环中的语句再次执行。这个过程反复进行,直到布尔表达式为假。
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=10; do{ System.out.print("valueofx:"+x); x++; System.out.print("\n"); }while(x<20); } }
这将产生以下结果:
valueofx:10 valueofx:11 valueofx:12 valueofx:13 valueofx:14 valueofx:15 valueofx:16 valueofx:17 valueofx:18 valueofx:19
for循环
for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。
知道一个任务要重复多少次的时候,for循环是有好处的。
语法
for循环的语法是:
for(initialization;Boolean_expression;update) { //Statements }
下面是一个for循环的控制流程:
初始化步骤首先被执行,并且仅一次。这个步骤可声明和初始化任何循环控制变量。不需要把一个声明放在这里,只需要一个分号出现。
接下来,布尔表达式求值。如果是true,则执行循环体。如果是false,则循环体不执行,并且流程控制的跳转到经过for循环的下一个语句。
之后循环体在for循环执行时,控制流程跳转备份到更新语句。该语句允许更新任何循环控制变量。这个语句可以留空,只要一个分号出现在布尔表达式之后。
布尔表达式现在再次评估计算。如果是true,循环执行,并重复这个过程(循环体,然后更新的步骤,然后布尔表达式)。之后,布尔表达式为false,则循环终止。
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ for(intx=10;x<20;x=x+1){ System.out.print("valueofx:"+x); System.out.print("\n"); } } }
这将产生以下结果:
valueofx:10 valueofx:11 valueofx:12 valueofx:13 valueofx:14 valueofx:15 valueofx:16 valueofx:17 valueofx:18 valueofx:19
for循环在Java中新特性
截至Java5,对增强的for循环进行了介绍。这主要是用于数组。
语法
增强的for循环的语法是:
for(declaration:expression) { //Statements }
声明:新声明块变量,这是一种与你所正在访问数组中的元素兼容的变量。该变量在for块内可被利用并且它的值作为当前的数组元素将是相同的。
表达:这个计算结果完成需要循环数组。表达式可以是一个数组变量或返回一个数组的方法调用。
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ int[]numbers={10,20,30,40,50}; for(intx:numbers){ System.out.print(x); System.out.print(","); } System.out.print("\n"); String[]names={"James","Larry","Tom","Lacy"}; for(Stringname:names){ System.out.print(name); System.out.print(","); } } }
这将产生以下结果:
10,20,30,40,50, James,Larry,Tom,Lacy,
break关键字
关键字break是用来停止整个循环的。break关键字必须使用于任何循环中或一个switch语句中。
关键字break将停止最内层循环的执行,并开始执行在块之后的下一行代码。
语法
break语法是任何循环中一个单独的语句:
break
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ int[]numbers={10,20,30,40,50}; for(intx:numbers){ if(x==30){ break; } System.out.print(x); System.out.print("\n"); } } }
这将产生以下结果:
10 20
continue关键字
continue关键字可以在任一环的控制结构使用。它使循环立即跳转到循环的下一次迭代.
在for循环中,continue关键字会导致控制流立即跳转到更新语句。
在一个while循环或do/while循环,控制流立即跳转到布尔表达式。
语法
continue语法是任何循环中一个单独的语句:
continue
示例
publicstaticvoidmain(Stringargs[]){ int[]numbers={10,20,30,40,50}; for(intx:numbers){ if(x==30){ continue; } System.out.print(x); System.out.print("\n"); } } }
这将产生以下结果:
10 20 40 50
条件判断
在Java中有两种类型的条件判断语句,它们分别是:
- if语句
- switch语句
if语句:
if语句由一个布尔表达式后跟一个或多个语句组成。
语法
if语句的语法是:
if(Boolean_expression) { //StatementswillexecuteiftheBooleanexpressionistrue }
如果布尔表达式的值为true,那么代码里面的块if语句将被执行。如果不是true,在if语句(大括号后)结束后的第一套代码将被执行。
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=10; if(x<20){ System.out.print("Thisisifstatement"); } } }
这将产生以下结果:
Thisisifstatement
if...else语句
任何if语句后面可以跟一个可选的else语句,当布尔表达式为false,语句被执行。
语法
if...else的语法是:
if(Boolean_expression){ //ExecuteswhentheBooleanexpressionistrue }else{ //ExecuteswhentheBooleanexpressionisfalse }
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=30; if(x<20){ System.out.print("Thisisifstatement"); }else{ System.out.print("Thisiselsestatement"); } } }
这将产生以下结果:
Thisiselsestatement
if...elseif...else语句
if后面可以跟一个可选的elseif...else语句,在测试不同条件下单一的if语句和elseif语句是非常有用的。
当使用if,elseif,else语句时有几点要牢记。
- 一个if语句可以有0个或一个else语句且它必须在elseif语句的之后。
- 一个if语句可以有0个或多个elseif语句且它们必须在else语句之前。
- 一旦elseif语句成功,余下elseif语句或else语句都不会被测试执行。
语法
if...else的语法是:
if(Boolean_expression1){ //ExecuteswhentheBooleanexpression1istrue }elseif(Boolean_expression2){ //ExecuteswhentheBooleanexpression2istrue }elseif(Boolean_expression3){ //ExecuteswhentheBooleanexpression3istrue }else{ //Executeswhenthenoneoftheaboveconditionistrue. }
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=30; if(x==10){ System.out.print("ValueofXis10"); }elseif(x==20){ System.out.print("ValueofXis20"); }elseif(x==30){ System.out.print("ValueofXis30"); }else{ System.out.print("Thisiselsestatement"); } } }
这将产生以下结果:
ValueofXis30
嵌套if...else语句
它始终是合法的嵌套if-else语句,这意味着你可以在另一个if或elseif语句中使用一个if或elseif语句。
语法
嵌套if...else的语法如下:
if(Boolean_expression1){ //ExecuteswhentheBooleanexpression1istrue if(Boolean_expression2){ //ExecuteswhentheBooleanexpression2istrue } }
因为我们有嵌套的if语句,所以可以用类似的方式嵌套elseif...else。
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=30; inty=10; if(x==30){ if(y==10){ System.out.print("X=30andY=10"); } } } }
这将产生以下结果:
X=30andY=10
switch语句
switch语句允许一个变量来对一系列值得相等性进行测试。每个值被称为一case,并且被启动的变量会为每一个case检查。
语法
增强的for循环的语法是:
switch(expression){ casevalue: //Statements break;//optional casevalue: //Statements break;//optional //Youcanhaveanynumberofcasestatements. default://Optional //Statements }
以下规则适用于switch语句:
- 在switch语句中使用的变量只能是一个字节,short,int或char。
- 在一个switch语句中可以有任何数量的case语句。每个case后跟着即将被比较的值和一个冒号。
- 对于case的值必须是相同的数据类型作为开关变量,它必须是一个常量或文字。
- 当被启动了的变量与case是相等的,那case后的语句将执行,一直到break为止。
- 当达到一个break语句,switch终止,并且控制流跳转到跟着switch语句的下一行。
- 不是每一个case需要包含一个break。如果没有出现break,控制流将贯穿到后面的case直到break为止。
- switch语句可以有一个可选默认case,它必须出现在switch的结束处。在执行一项任务时没有任何case是真,那默认case可被使用。在默认case中不需要break。
示例
publicclassTest{ publicstaticvoidmain(Stringargs[]){ //chargrade=args[0].charAt(0); chargrade='C'; switch(grade) { case'A': System.out.println("Excellent!"); break; case'B': case'C': System.out.println("Welldone"); break; case'D': System.out.println("Youpassed"); case'F': System.out.println("Bettertryagain"); break; default: System.out.println("Invalidgrade"); } System.out.println("Yourgradeis"+grade); } }
编译并运行上面使用各种命令行参数的程序。这将产生以下结果:
$javaTest Welldone YourgradeisaC