Java笔记——进阶Java——流程控制语句

目录

一、java选择结构

1、if,else 条件判断

2、switch 等价判断

二、局部变量

1、概念

2、作用范围

三、循环语句

1、概念

2、while循环语句

3、do while循环语句

4、for循环语句

5、嵌套循环

四、拓展与练习

1、小拓展

2、机试题

五、结语


一、java选择结构

1、if,else 条件判断

概念:根据已知条件进行逻辑判断,满足条件后执行相应操作。

第一种,基本if选择结构

语法:

if(布尔表达式){   

        代码块1

}

        后续代码....

注意:

1)、布尔表达式:其结果必须是布尔类型的值,当你判断两个值是否相等时是不是要使用关系运算符,比如你比较 5 == 2,计算机会进行判断,不满足及返回false,满足时返回true;

2)、代码块:被大括号括起来的代码称为代码块,被谁括的则就是属于谁的。

3)、始终记得代码是从上往下一行行执行的,但当遇到流程语句时,会根据条件选择是否执行。

执行解释:(if中文意思:如果)

1)、如果布尔表达式的结果为true则执行代码块1,在执行后续代码;

2)、如果布尔表达式的结果为false则不执行代码块1,直接执行后续代码。

我们模拟一个场景:比如我们在一家饭店吃饭,这家饭店搞活动,当我们的消费大于100时,给我们打95折。

Java笔记——进阶Java——流程控制语句

第二种,if else条件判断

if(布尔表达式){

        代码块1

}else{

        代码块2

}

后续代码....

执行解释:(else中文意思:否则)

1)、如果布尔表达式为true时,执行代码块1再执行后续代码;

2)、如果布尔表达式为false时,执行代码块2再执行后续代码。

if else 结构一旦编写则必须执行其中之一,要么执行代码块1的内容,要么执行代码块2的内容,也不可能代码块1和代码块2一起执行。

延续上个场景:比如我们在一家饭店吃饭,这家饭店搞活动,当我们的消费大于100时,给我们打95折,小于100时则原价支付。

Java笔记——进阶Java——流程控制语句

第三种,多重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折,不满足时则原价。

Java笔记——进阶Java——流程控制语句

这个时候我们可不可以将判断条件随便移动呢?

Java笔记——进阶Java——流程控制语句

注意:这个时候我们就要将条件改成对一个规定的区间进行判断,就要用到我们之前学到的逻辑运算符了;比如我们消费金额大于100元但是小于200时,这是不是一个区间呢。

Java笔记——进阶Java——流程控制语句

第四种,嵌套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;

Java笔记——进阶Java——流程控制语句

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为人工服务。请以代码显示输出

Java笔记——进阶Java——流程控制语句

注意:如果不加break呢(break是一个跳出流程语句的关键字)

Java笔记——进阶Java——流程控制语句

如果不加break,当匹配的case被执行后,并不会自动退出整个结构,而是继续向下执行。所以我们要加break关键字,当执行匹配的case后再其后加上break则可以跳出整个结构。我们可以针对这一特性,完成某个特殊需求,比如:

场景二:在一周中,我1、3、5学英语,2、4、6学java,星期天休息

Java笔记——进阶Java——流程控制语句

是不是减少了一些重复性操作

二、局部变量

1、概念

声明在函数(也叫方法)内部的变量,必须先赋值在使用。比如:

Java笔记——进阶Java——流程控制语句

2、作用范围

既然是局部变量,当然也有其使用的范围:定义行的开始到所在的代码块结束,是不是不是很明白,没关系看下图

Java笔记——进阶Java——流程控制语句

注意:就是变量名在各自的范围内是不可以重名的,但是在两个结构里可以重名

Java笔记——进阶Java——流程控制语句

三、循环语句

1、概念

生活中的概念:

某学校举行运动会,跑步这一项需要跑步10000米,但是跑道只有400米,我们是不可以绕着400米的跑道重复跑25圈即可完成10000米的跑步目标

程序中的概念:

通过某个条件,重复的执行一段逻辑代码,直到完成某个目标,结束执行;引入上面的跑步问题那可以这么来说:条件是我们每次跑一圈的距离是400米,目标是为了跑够10000米,那么是不是当我们跑够25圈后就可以达成10000米这个目标,就可以停下来了呢。

Java笔记——进阶Java——流程控制语句

顺序结构的程序语句只能 被执行一次。如果你要同样的操作执行多次,就需要使用循环结构。

2、while循环语句

while(布尔表达式){

        循环体

}

后续代码....

执行解释:(while中文意思:虽然)

1)、当布尔表达式结果为true时,执行循环体,然后再上去进行判断布尔表达式,其结果还是true,则再执行循环体,直到布尔表达式的结果为false时,退出循环执行后续代码。

2)、当布尔表达式结果为false时,则该循环体不执行任何操作,直接执行后续代码。

看起来是不和if条件判断差不多只不过是将if关键字换成了while关键字,那么我们引入上面说的那个跑步场景来测试一下吧

Java笔记——进阶Java——流程控制语句

那么为什么会这样呢?这是因为我们用来做判断的变量i一直都是1,导致这个布尔表达式的结果一直都是true,所以会无休止的执行下去。解决起来也很简单,就是每次做完一次循环操作将i值递加一下就可以了,如:

Java笔记——进阶Java——流程控制语句

注:while循环的特性:就是要么执行要么不执行即:0次或多次

3、do while循环语句

对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。这时候我们就要使用do{}while()循环了。 

语句:

do{

        循环体

}while(布尔表达式)

后续代码....

执行解释:(do中文意思:做)

1)、当程序来到do{}while()循环后,会先执行一次循环体,在对布尔表达式进行判断,如果为true则继续执行循环体,如果为false则退出循环体,执行后续代码。

Java笔记——进阶Java——流程控制语句

do{}while()的特性:至少执行一次循环体即1次到多次

4、for循环语句

虽然所有循环结构都可以用while或者do…while表示,但java提供了另一种语句for循环,使一些循环结构变得更简单。

for(声明一个int变量;布尔表达式;变量的叠加){

        循环体

}

后续代码....

执行解释:(for中文意思:因为)

1)、当程序来到for循环时,会先执行声明一个int变量,在执行”布尔表达式“,接着当布尔表达式结果为true时执行循环体,最后呢在对int变量做一次叠加,然后在判断,如此循环直到布尔表达式的值为false时则跳出循环,执行后续代码。

Java笔记——进阶Java——流程控制语句

5、嵌套循环

不管是什么循环都可以互相嵌套,嵌套循环规则如下:

 首先内层循环属于外层循环循环体的一部分,外层循环执行一次进入内层循环,内层循环循环到结束,在执行外层循环。

因for循环的简洁,所以很多时候都用for循环

语法:

for(声明一个int变量;判断条件;变量的变换){ 外层循环

        外层循环体

        for(声明一个int变量;判断条件;变量的变换){ 内层循环

                内层循环体

        }

}

后续代码....

解释执行:(我们举例外层循环5次,内层循环10次)

1)、当外层循环第一次时,要将内层循环循环完,即内层循环循环10次;然后再出来执行外层循环第二次,在将内层循环执行完(当然循环体可以嵌套多个,只要你有需求)具体如下图所示:

Java笔记——进阶Java——流程控制语句

场景:打印正直角三角形

在这里只要明白外层循环控制行数,内层循环控制每行个数就很简单。

Java笔记——进阶Java——流程控制语句

四、拓展与练习

1、小拓展

那么如果我们不想让循环执行完,只执行到某次然后就结束循环怎么办呢?

当当当,我们会有跳出循环的关键字如:

continue(中文意思:持续):语句用来结束本次循环。

Java笔记——进阶Java——流程控制语句

break:语句用来结束当前循环结构,即跳出当前循环体

Java笔记——进阶Java——流程控制语句

跳出流程语句权限大小:continue < break < return。return先不说

2、机试题

1)、请用代码实现一个简单的+,-,*,/计算机

Java笔记——进阶Java——流程控制语句

2)、用双重循环打印99乘法表

Java笔记——进阶Java——流程控制语句

3)、打印正直角三角形到直角三角形及菱形

正等边三角形

Java笔记——进阶Java——流程控制语句

倒等边三角形

Java笔记——进阶Java——流程控制语句

菱形(就是将正等边三角与倒等边三角合起来就OK了)

Java笔记——进阶Java——流程控制语句

4)、下面这个好难,我都是死搬硬套算出来的(这些题理解了那么条件分支语句就ok了)

Java笔记——进阶Java——流程控制语句

五、结语

不管是学习什么语言必须自己亲手一遍一遍的去找案例反复去编写,运行成功后自己在慢慢尝试优化,然后可能会衍生出很多错误,但是不要害怕,这个时候应该先弄明白为什么出错,在想尽办法解决;最后在这一次一次的编写中才会明白这个原来是这样用的,原来还可以这样等等。