Java业务代码的编写要想实现诸多逻辑离不开控制语句,控制语句分为三大类。选择语句(分支语句)包含if语句、switch语句;循环语句包含while循环、for循环、do...while...循环;转向语句包含break语句、continue语句、return语句。//第一种写法
if(布尔表达式){
java语句;
java语句;
}
执行原理是if语句发起的大括号中的语句要执行,其前提条件是布尔表达式为真。//第二种写法
if(布尔表达式){//分支1
java语句;
}else{ //分支2
java语句;
}
执行原理是如果布尔表达式的结果为true,则执行分支1,分支2不执行。如果布尔表达式的结果是false,分支1不执行,执行分支2。
总之,这两条分支语句必会执行其中一条,在这里特别强调任何情况下只能有一个分支执行,不可能存在2个或者更多个分支执行。if语句中只要有一个分支执行了,整个if语句就会结束。//第三种写法
if(布尔表达式1){//分支1
java语句;
}else if(布尔表达式2){ //分支2
java语句;
}else if(布尔表达式3){ //分支3
java语句;
}....
执行原理是先判断"布尔表达式1",如果"布尔表达式1"为true,则执行分支1,然后if语句结束;如果布尔表达式1结果为false就会判断"布尔表达式2"的结果,如果是true,则执行分支2,然后整个if就结束了,以此类推;从上往下判断,只要一个分支执行,if语句执行结束。//第四种写法
if(布尔表达式1){//分支1
java语句;
}else if(布尔表达式2){ //分支2
java语句;
}else if(布尔表达式3){ //分支3
java语句;
}else{
java语句;
}
这种写法是在第三种的基础上加了else语句,这也就意味着因为else语句的存在,整个if语句必会有一条分支语句存在执行。switch(值){
case 值1:
java语句;
java语句;
break;
case 值2:
java语句;
java语句;
break;
case 值3:
java语句;
java语句;
break;
default:
java语句;
}
以上是一个完整的switch语句,其中break语句和default分支不是必须的。switch中的值可以支持两种数据类型分别是String类型和int类型,但是byte、short、char也可以使用在switch语句中,因为java语法可以进行自动类型转换。整个语句的执行原理是,如果“值”与“值1”进行比较,如果值相等,则执行该分支语句中的java语句,然后遇到“break”语句,switch语句就结束了。如果“值”与“值1”不相等,则会继续比较“值”与“值2”,以此类推。值得注意的是,如果“值”与“值1”相等,且该case语句中不包含break语句,执行完case语句中的java语句块,就会发生case穿透现象,即不需要判断“值”与“值2”是否相等就会执行case“值2”中的分支语句。如果case“值2”语句中仍然没有break语句,就会继续往下穿透。default分支语句是在“值”和所有case中的值都不匹配时执行的,类似于if语句中的else分支。for(初始化表达式; 条件表达式; 更新表达式){
循环体;//循环体由java语句构成
}
执行原理是先执行初始化表达式,并且在整个循环中只执行一次。然后判断条件表达式的结果,如果条件表达式的结果为true,则执行循环体。循环体结束后,执行更新表达式,更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体。直到更新表达式执行结束以后,再次判断条件时,条件为false,for循环终止。执行原理是先判断布尔表达式的结果,如果为true就执行循环体,循环体结束后,再次判断布尔表达式的结果,如果还是true,继续执行循环体。特别注意的是while后面的分号不要遗漏。执行原理是先执行循环体中的代码,执行一次循环体后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false循环结束。其和while循环的区别是至少会执行一次循环体的内容。break语句特殊在一个单词成为一条语句,continue也是这样,它俩都是一个单词成为一条语句。break语句可以用在两个地方,其他地方不行;第一个语句是switch语句中,用来终止switch语句的执行,防止case穿透现象,用来终止switch,这个用法已经介绍过。第二个位置用于循环语句中,用来终止循环的执行,break语句终止离它最近的循环。for(int k = 1; k < 8; k++){
for(int i = 0; i < 10; i++){
if(i == 5){
break;
}
System.out.println("i = " + i);
}
}
上述语句段是两层for循环,当内部for循环中的i为5时,执行break语句,内部循环到此结束,但是外部循环仍然会继续,也就是break语句只会停下离它最近的循环语句。continue语句是阻断当前的本次循环终止了,继续下一次循环。for(int i =0; i < 10; i++){
if(i == 5){
continue;
}
System.out.println("i =" + i);
}
此次for循环的结果是
i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9
由结果可知,continue只能阻断本次迭代余下程序的执行,因此没有打印出i=5,而并没有停下整个for循环。return 语句是来终止一个方法的,且向调用该方法的主调函数返回一个调用结果。