Java编程里的控制语句
控制语句:把语句组合成能完成一定功能的小逻辑模块。它分为三类:顺序、选择和循环。
1.“顺序结构”代表“先执行a,再执行b”的逻辑。
2.“条件判断结构”代表“如果…,则…”的逻辑。
3.“循环结构”代表“如果…,则重复执行…”的逻辑。
条件判断结构(选择结构)
条件判断结构有:if结构和switch结构。而if结构又可以分为if单分支结构、if-else双分支结构、if-else if-else多分支结构。
Math类的使用:
Math.random()该方法用于产生0到1区间的double类型的随机数,但是不包括1。
int i = (int) (6 * Math.**random**()); //产生:[0,5]之间的随机整数
if-else双分支结构:
语法结构:
if(布尔表达式){
语句块1
}else{
语句块2
}
当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
if-else if-else多分支结构
语法结构:
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}……
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;
如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。
switch语句
语法结构:
switch (表达式) {
case 值1:
语句块1;
[break];
case 值2:
语句块2;
[break];
… … … … …
[default:
默认语句块;]
}
1.switch会根据表达式的值从相匹配的case标签处开始执行,一直执行到break处或者是switch的末尾。如果表达式的值与任一case值不匹配,则进入default语句。
2.switch中表达式的值,是int(byte、short、char也可,long不行)、枚举,字符串。
循环结构
循环结构分两大类,一类是当型,一类是直到型。
当型:当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止循环,比如:while与for循环。
直到型:先执行某语句, 再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环。
while循环
while (布尔表达式) {
循环体;
}
1.在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
2.语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
do-while循环
do {
循环体;
} while(布尔表达式) ;
1.do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。
2.do-while循环的循环体至少执行一次。
循环结构(for)
for (初始表达式; 布尔表达式; 迭代因子) {
循环体;
}
1.初始化部分设置:循环变量的初值
2.条件判断部分为:布尔表达式
3.迭代因子:控制循环变量的增减
4.for循环在执行条件判定后,先执行的循环体部分,再执行步进。
break语句和continue语句
1.break用于强行退出整个循环
2.continue用于结束本次循环,继续下一次
方法的重载(overload)
重载:一个类中可以定义多个名称相同,但形式参数列表不同的方法。
构成方法重载的条件:
1.形参列表不同的含义:形参类型、形参个数、形参顺序不同
2.只有返回值不同不构成方法的重载。如:int a(String str){}与 void a(String str){}不构成方法重载
3.只有形参的名称不同,不构成方法的重载。如:int a(String str){}与int a(String s){}不构成方法重载
递归结构
1.递归是一种常见的算法思路,在很多算法中都会用到。比如:深度优先搜索(DFS:Depth First Search)等。
2.递归的基本思想就是“自己调用自己”。
递归结构包括两个部分:
1.定义递归头。 解决:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
2.递归体。 解决:什么时候需要调用自身方法。
递归的缺陷:
算法简单是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。