Java笔记——进阶Java——流程控制语句
目录
一、java选择结构
1、if,else 条件判断
概念:根据已知条件进行逻辑判断,满足条件后执行相应操作。
第一种,基本if选择结构
语法:
if(布尔表达式){
代码块1
}
后续代码....
注意:
1)、布尔表达式:其结果必须是布尔类型的值,当你判断两个值是否相等时是不是要使用关系运算符,比如你比较 5 == 2,计算机会进行判断,不满足及返回false,满足时返回true;
2)、代码块:被大括号括起来的代码称为代码块,被谁括的则就是属于谁的。
3)、始终记得代码是从上往下一行行执行的,但当遇到流程语句时,会根据条件选择是否执行。
执行解释:(if中文意思:如果)
1)、如果布尔表达式的结果为true则执行代码块1,在执行后续代码;
2)、如果布尔表达式的结果为false则不执行代码块1,直接执行后续代码。
我们模拟一个场景:比如我们在一家饭店吃饭,这家饭店搞活动,当我们的消费大于100时,给我们打95折。
第二种,if else条件判断
if(布尔表达式){
代码块1
}else{
代码块2
}
后续代码....
执行解释:(else中文意思:否则)
1)、如果布尔表达式为true时,执行代码块1再执行后续代码;
2)、如果布尔表达式为false时,执行代码块2再执行后续代码。
if else 结构一旦编写则必须执行其中之一,要么执行代码块1的内容,要么执行代码块2的内容,也不可能代码块1和代码块2一起执行。
延续上个场景:比如我们在一家饭店吃饭,这家饭店搞活动,当我们的消费大于100时,给我们打95折,小于100时则原价支付。
第三种,多重if条件判断
if(布尔表达式1){
代码块1
}else if(布尔表达式2){
代码块2
}else{
代码块3
}
后续代码....
执行解释:(else if中文意思:否则如果)
1)、如果布尔表达式1为true,则执行代码块1,自动跳出结构体,再执行后续代码;
2)、如果布尔表达式1为false,则判断布尔表达式2,其结果如果为true,则执行代码块2,自动跳出结构体,再执行后续代码;
3)、如果布尔表达式1和布尔表达式2都为false时,则执行代码块3,自动跳出结构体,再执行后续代码。注意else if可以一直往后写多个。
延续上一个场景:比如我们在一家饭店吃饭,这家饭店搞活动,当我们的消费大于100时,给我们打95折,大于200时给我们打85折,大于300时给我们打8折,不满足时则原价。
这个时候我们可不可以将判断条件随便移动呢?
注意:这个时候我们就要将条件改成对一个规定的区间进行判断,就要用到我们之前学到的逻辑运算符了;比如我们消费金额大于100元但是小于200时,这是不是一个区间呢。
第四种,嵌套if条件判断
语法
if(外层表达式){
外层代码块1
if(内层表达式){
内层代码块1
}else{
内层代码块2
}
}else{
外层代码块2
}
后续代码....
执行讲解:
1)、如果外层表达式结果为true则执行外层代码块1,再对内层表达式进行判断,如果其结果为true则执行内层代码块1,最后再执行后续代码; 2)、如果外层表达式结果为true,内层表达式结果为false,则执行内层代码块2,最后再执行后续代码;
3)、如果外层表达式其结果为false,则执行外层代码块2,最后再执行后续代码
我们模拟一个场景:比如我们在一家饭店吃饭,这家饭店搞活动,当我们的消费大于100时,给我们打95折,如果是会员并且消费满100时打7.5折。
注意:equals()为:判断String类型中两个值是否相等,这里不考虑其他内容只考虑值是否相等,如:name.eauals(“张三”),就是判断name里的变量如果是张三则返回true,如果不是则返回false;
2、switch 等价判断
switch的语法如下:
switch(变量){ 若变量名与底下case值相匹配则执行对应代码块
case 1:
代码块1
break;
case 2:
代码块2
break;
default:
代码块3
break;
}
后续代码....
执行解释:(switch中文意思:转换)、(case中文意思:案例)、(default中文意思:违约)、(break中文意思:打破)
1)、当小括号中的变量值为1时,则执行代码块1,然后break跳出分支语句,再执行后续代码。
2)、当小括号中的变量值为2时,则执行代码块2,然后break跳出分支语句,再执行后续代码。
3)、当输入的整数没有匹配的值时,比如变量值为10时,则执行代码块3,然后break跳出分支语句,再执行后续代码。
规则:
1)、switch语句中可判断的变量类型在jdk1.6版本之前只能使用byte、short、int或者char类型,但在jdk1.6版本之后不包括1.6也可以使用String类型的变量了。
2)、case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量(所谓的常量指的是在运行窗口,运行程序时,无法更改,而不是说在代码中无法更改)。
3)、switch是等价判断,并且其判断的值不要用小数来进行判断,没有太大意义。
场景一:现给出1为话费充值,2为流量管理,3为短信套餐,0为人工服务。请以代码显示输出
注意:如果不加break呢(break是一个跳出流程语句的关键字)
如果不加break,当匹配的case被执行后,并不会自动退出整个结构,而是继续向下执行。所以我们要加break关键字,当执行匹配的case后再其后加上break则可以跳出整个结构。我们可以针对这一特性,完成某个特殊需求,比如:
场景二:在一周中,我1、3、5学英语,2、4、6学java,星期天休息
是不是减少了一些重复性操作
二、局部变量
1、概念
声明在函数(也叫方法)内部的变量,必须先赋值在使用。比如:
2、作用范围
既然是局部变量,当然也有其使用的范围:定义行的开始到所在的代码块结束,是不是不是很明白,没关系看下图
注意:就是变量名在各自的范围内是不可以重名的,但是在两个结构里可以重名
三、循环语句
1、概念
生活中的概念:
某学校举行运动会,跑步这一项需要跑步10000米,但是跑道只有400米,我们是不可以绕着400米的跑道重复跑25圈即可完成10000米的跑步目标
程序中的概念:
通过某个条件,重复的执行一段逻辑代码,直到完成某个目标,结束执行;引入上面的跑步问题那可以这么来说:条件是我们每次跑一圈的距离是400米,目标是为了跑够10000米,那么是不是当我们跑够25圈后就可以达成10000米这个目标,就可以停下来了呢。
顺序结构的程序语句只能 被执行一次。如果你要同样的操作执行多次,就需要使用循环结构。
2、while循环语句
while(布尔表达式){
循环体
}
后续代码....
执行解释:(while中文意思:虽然)
1)、当布尔表达式结果为true时,执行循环体,然后再上去进行判断布尔表达式,其结果还是true,则再执行循环体,直到布尔表达式的结果为false时,退出循环执行后续代码。
2)、当布尔表达式结果为false时,则该循环体不执行任何操作,直接执行后续代码。
看起来是不和if条件判断差不多只不过是将if关键字换成了while关键字,那么我们引入上面说的那个跑步场景来测试一下吧
那么为什么会这样呢?这是因为我们用来做判断的变量i一直都是1,导致这个布尔表达式的结果一直都是true,所以会无休止的执行下去。解决起来也很简单,就是每次做完一次循环操作将i值递加一下就可以了,如:
注:while循环的特性:就是要么执行要么不执行即:0次或多次
3、do while循环语句
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。这时候我们就要使用do{}while()循环了。
语句:
do{
循环体
}while(布尔表达式)
后续代码....
执行解释:(do中文意思:做)
1)、当程序来到do{}while()循环后,会先执行一次循环体,在对布尔表达式进行判断,如果为true则继续执行循环体,如果为false则退出循环体,执行后续代码。
do{}while()的特性:至少执行一次循环体即1次到多次
4、for循环语句
虽然所有循环结构都可以用while或者do…while表示,但java提供了另一种语句for循环,使一些循环结构变得更简单。
for(声明一个int变量;布尔表达式;变量的叠加){
循环体
}
后续代码....
执行解释:(for中文意思:因为)
1)、当程序来到for循环时,会先执行”声明一个int变量”,在执行”布尔表达式“,接着当布尔表达式结果为true时执行循环体,最后呢在对int变量做一次叠加,然后在判断,如此循环直到布尔表达式的值为false时则跳出循环,执行后续代码。
5、嵌套循环
不管是什么循环都可以互相嵌套,嵌套循环规则如下:
首先内层循环属于外层循环循环体的一部分,外层循环执行一次进入内层循环,内层循环循环到结束,在执行外层循环。
因for循环的简洁,所以很多时候都用for循环
语法:
for(声明一个int变量;判断条件;变量的变换){ 外层循环
外层循环体
for(声明一个int变量;判断条件;变量的变换){ 内层循环
内层循环体
}
}
后续代码....
解释执行:(我们举例外层循环5次,内层循环10次)
1)、当外层循环第一次时,要将内层循环循环完,即内层循环循环10次;然后再出来执行外层循环第二次,在将内层循环执行完(当然循环体可以嵌套多个,只要你有需求)具体如下图所示:
场景:打印正直角三角形
在这里只要明白外层循环控制行数,内层循环控制每行个数就很简单。
四、拓展与练习
1、小拓展
那么如果我们不想让循环执行完,只执行到某次然后就结束循环怎么办呢?
当当当,我们会有跳出循环的关键字如:
continue(中文意思:持续):语句用来结束本次循环。
break:语句用来结束当前循环结构,即跳出当前循环体
跳出流程语句权限大小:continue < break < return。return先不说
2、机试题
1)、请用代码实现一个简单的+,-,*,/计算机
2)、用双重循环打印99乘法表
3)、打印正直角三角形到直角三角形及菱形
正等边三角形
倒等边三角形
菱形(就是将正等边三角与倒等边三角合起来就OK了)
4)、下面这个好难,我都是死搬硬套算出来的(这些题理解了那么条件分支语句就ok了)
五、结语
不管是学习什么语言必须自己亲手一遍一遍的去找案例反复去编写,运行成功后自己在慢慢尝试优化,然后可能会衍生出很多错误,但是不要害怕,这个时候应该先弄明白为什么出错,在想尽办法解决;最后在这一次一次的编写中才会明白这个原来是这样用的,原来还可以这样等等。