Core Java(三)
三.运算符&流程控制
运算符---http://blog.csdn.net/typa01_kk/article/details/45000535
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
流程控制语句又分成顺序结构、选择结构、循环结构,中断。
——顺序结构
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
总的来说:写在前面的先执行,写在后面的后执行。
——选择结构(分支结构)
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
Java语言提供了两种选择结构语句:if(如果)语句、switch语句
——if
if语句有三种格式;
格式一:
A
if(true) {
语句体 B
}
后续语句 C
执行流程:首先判断关系表达式看其结果是true还是false,如果是true就执行语句体,如果是false就不执行语句体
注意事项:
关系表达式无论简单还是复杂,结果必须是boolean类型
if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
格式二:
if(关系表达式) {
语句体1;
}
else {
语句体2;
}
执行流程:首先判断关系表达式看其结果是true还是false,如果是true就执行语句体1,如果是false就执行语句体2。
注: 三元运算符根据比较判断后,给出的也是两个结果,所以,这种情况和if语句的第二种格式很相似,他们在某些情况下应该是可以相互转换的。
if语句第二种格式和三元运算符
三元运算符的操作都可以使用if语句改进,反之不成立
什么时候不成立呢? 当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。而输出语句却不能作为一个返回结果。
格式三:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程:首先判断关系表达式1看其结果是true还是false,如果是true就执行语句体1,如果是false就继续判断关系表达式2看其结果是true还是false,如果是true就执行语句体2,如果是false就继续判断关系表达式…看其结果是true还是false…,如果没有任何关系表达式为true,就执行语句体n+1。
——switch
格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
格式解释:
switch表示这是switch语句;
表达式的取值:byte,short,int,char;
JDK5以后可以是枚举、JDK7以后可以是String;
case后面跟的是要和表达式进行比较的值
语句体部分可以是一条或多条语句
break表示中断,结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程:
首先计算出表达式的值;
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项:
case后面只能是常量,不能是变量,而且,多个case后面的值不能相同
default可以省略吗?
可以省略。一般不建议。除非判断的值是固定的。(单选题)
break可以省略吗?
可以省略,一般不建议。否则结果可能不是你想要的
default的位置一定要在最后吗?
可以出现在switch语句任意位置。
switch语句的结束条件:
遇到break;
执行到程序的末尾;
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
——循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
——循环语句的组成
初始化语句:
一条或者多条语句,这些语句完成一些初始化操作。
判断条件语句:
这是一个boolean 表达式,这个表达式能决定是否执行循环体。
循环体语句:
这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:
这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
——for循环语句
for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句,看其结果是true还是false
如果是false,循环结束。
如果是true,继续执行。
C:执行循环体语句
D:执行控制条件语句
E:回到B继续
注意事项:
判断条件语句的结果是一个boolean类型;
循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略;
——while循环语句
while循环语句 格式:
初始化语句;
while(判断条件语句:boolean) {
循环体语句;
控制条件语句;
}
——循环结构(for循环和while循环的区别)
for循环语句和while循环语句可以等价转换,但还是有些小区别的。
使用区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:
for循环适合针对一个范围判断进行操作;
while循环适合判断次数不明确操作;
——do…while循环语句
do…while循环语句格式:
初始化语句;
do {
循环体语句;
控制条件语句;
} while(判断条件语句);
——三种循环结构的区别及注意事项
三种循环语句其实都可以完成一样的功能,也就是说可以等价转换,但还是有区别的:
do…while循环至少会执行一次循环体。
for循环和while循环只有在条件成立的时候才会去执行循环体
注意事项:
写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。
如下代码是死循环
while(true){};
for(;;){};
——break、continue
——break的使用场景:
在选择结构switch语句中;
在循环语句中;
离开使用场景的存在是没有意义的
——break的作用:
跳出单层循环;
跳出多层循环;
带标签的跳出:
格式:标签名: 循环语句
标签名要符合Java的命名规则
——continue的使用场景:
在循环语句中;
离开使用场景的存在是没有意义的
——continue的作用:
退出本次循环(同学们可以对比着break来理解)
Q12:小明的妈妈每天给她2.5元钱,他都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,他都会花去6元钱,请问,经过多少天,小他才可以存到100元钱。