程序的顺序结构:

如果代码里没有流程控制程序是按照书写的格式从上而下一行一行执行的

一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束

三大结构

如果使用程序描述“如果今天是周一,就上班,如果今天是周二就逛街,如果今天是周三就去公园......”。

显然使用顺序结构是搞不定的。因为此时程序具有多个条件,需要通过条件判断来决定程序具体做什么,那怎么办呢?



if语句

如果使用程序描述“如果今天是周一,就上班,如果今天是周二就逛街,如果今天是周三就去公园......”。显然使用顺序结构是搞不定的。

因为此时程序具有多个条件,需要通过条件判断来决定程序具体做什么,那怎么办呢?

通过判断条件来做选择的语句,我们称为选择语句或分支语句。现在,我们一起来学习选择结构,选择结构有两种:分别是if和switch

三大结构

if语句使用boolean表达式或boolean值作为选择条件,有三种结构形式

if翻译成中文,表示如果......,就干.......,

-----------------------------------------------------------------------------------------------------------------------------

第一种结构形式

if(boolean表达式)

{

     条件执行体 三大结构

}

if后面跟的{}表示一个整体—代码块,我们在这称为条件执行体,也就是说条件为true,就执行这一块代码块。

-----------------------------:

if语句的使用注意:

    1):if(boolean表达式)后面,{}前面,是没有分号的.

三大结构

     2):如果if语句只控制一句话,那么可以不使用{}.企业规范:都要求,无论if控制几句话,统统使用花括号.

     3):操作boolean类型的变量的时候,下列代码不专业.

三大结构

第二种结构形式

if(boolean表达式){

     条件执行体A

}else{

     条件执行体B

}

完成:求最大最小值,分页案例

-----------------------------------------------------------------------

if-else语句和三元运算符:

从语义上二者的含义相同.

从本质上说,if-else是语句结构,三元运算符是一种运算符号.

三元运算符必须有一个结果,表达式必须有结果,必须有返回.

if-else,不能返回什么结果,只能控制语句的结构.

三大结构

注意:

 1):不能在if(boolean表达式),使用分号.

 2):不能直接使用else语句.

第三种结构形式:

if(boolean表达式A){

     条件执行体

}else if (boolean 表达式B){

     条件执行体B

}else{

     条件执行体C

}

------------------------------------

使用注意:

1):不能在if(boolean表达式),使用分号.

2):不能在else if(boolean表达式),使用分号.

3):不能直接使用elseif语句,必须先使用if语句.

4):此时的else语句,表示上述所有条件都为false

的时候才会执行的代码.

三大结构

三大结构

switch语句

switch语句结构的格式如下

switch(整型表达式){

  caseA值:

  表达式结果等于条件1时,执行此语句;

  break

  caseB值:

  表达式结果等于条件2时,执行此语句;

  break;

  ...

                             case C值:

  表达式结果等于条件N时,执行此语句;

  break;

  default:

  以上值都不满足时,执行此语句;

  break;//一般不写

}

注意:case之后的表达式结果必须是常量

三大结构

三大结构


三大结构

switch的使用细节和使用注意:

switch语句适用于对多个整型值进行匹配判断,从而实现条件的分支控制。

和if语句不同的是:if语句后面是根据boolean表达式判断的,所以表达式的结构可以任意写,而switch只是相当于做“表达式 == 数值”的boolean表达式判断。,推出:其实if语句更强大,switch仅仅只是对整数类型的判断而已,使用更简单.

这里的数值的类型是除long之外的整型类型也就是说switch支持的类型是byte,short,char,int

本质:switch仅仅只能支持int类型.(byte,short,char,会自动提升为int类型)

--------------------------------------------------------------

switch语句选择的基本数据类型只有四种:byte、short、char、int,没有long。支持的引用类型是以上四个基本数据类型的包装类(后讲),依次是Byte、Short、Character、Integer以及从Java5开始支持的枚举和Java7开始支持的String类

case只是用来为switch选择一个执行代码的入口,如果一旦进入某个入口之后,后面的case实际上已经失去了判断的意义,也就是说代码在进入switch执行的时会把入口case之后的case统统忽略,会一直往下执行,直到遇到break或return。(穿透)

所以大家可以发现,每一个case后面没有{}这个符号来表示一个代码块。

------------------------

default表示,所有的case的值都不正确,一般放在switch的最后,也不需要使用break语句,

三大结构

if和switch的选择:

ifswitch都属于选择语句,也就是说功能是相似的.

if:              判断条件是boolean类型的.

switch:     判断条件是  整数表达式 ==int类型的值.

------------------------------------------------------------

发现,switch只能适合对整数的值做判断,如果是一其他类型的判断,只能使用if语句.

选择:如果是对整数表达式判断等于多少,首选使用switch.

          其他情况,使用if语句.

循环语句

故事:话说唐僧师徒四人还在21世纪继续闯关,一天,师徒四人来到数字王国

第一关:Boss叫傻乎乎的唐僧叫500声帅哥。可是唐僧平时吃素,体力不好,叫200声就晕了,咋办,悟空马上变了个复读机出来,录音,播放。

第二关:Boss觉得唐僧好欺负再叫他从1数到100。此时复读机用不上来了,咋办?

第三关:求100以内正整数和?

于是,唐僧算1到25的和,悟空算26到50的和,八戒算51到75的和,沙僧算76到100的和。 

第四关:求1000以内正整数和?

于是,唐僧算1到250的和,悟空算251到500的和,八戒算501到750的和,沙僧算751到1000的和。

第五关:求10000以内正整数和?

-------------------------------------------------

案例:叫500声帅锅,打印500.

案例:从1数到100,打印从1~100

案例:帮大圣解决问题,计算100以内的正整

数和。

循环语句:

 1):while语句

 2):dowhile语句

 3):for语句

------------------------------------------------------

三种,可以完成相同的功能.

仅仅只是语法上有差异.

while循环:

格式:

while(boolean表达式)

{

        循环体s

}

while循环特点:先判断表达式,若为true就执行循环体,否则,跳过循环体。

看图

三大结构

三大结构

三大结构


三大结构



do---while循环:

格式:

do

{

      循环体语句

}

while(boolean表达式);

dowhile循环特点:先执行一次循环体,再判断表达式,若为true就执行循环体,否则,跳过循环体。

也就是说dowhile是先执行后判断,即使判断条件为false,该循环至少会执行一次

看图


三大结构

三大结构

for循环

格式:

for(初始化语句;boolean表达式;循环后操作语句)

{

  循环体语句

}

看图

初始化语句:表示对循环进行初始化,只在循环开始时执行一次,定义一个变量,并赋值

boolean表达式:表达式为false时,循环终止,true,才执行循环体

循环后操作语句:循环每次迭代之后会调用该语句,一般的该语句都是递增或递减操作


三大结构

三大结构三大结构

一般的,for循环值的循环迭代变量起名规则:

  见过最多的循环变量名称:i,j,k,m,n.

死循环和循环语句比

三大结构三大结构

循环语句都一样,仅仅只是语法结构上不一样而已.

提示:

三大循环,是可以互换的,一般情况下,要是指定次数的循环,选用for循环要方便点

一般的,习惯上选择i、j、k作为循环变量

---------------------------------------

从性能上分析:for循环性能更高.

     因为:变量定义在for循环里面,for循环执行完毕,就会释放该变量的存储空间.

三大结构

嵌套循环

现在Boss要让师徒四人都从1数到100,此时怎么办

使用已学知识解决:

-----------------------------------------------

若外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要m * n次

嵌套循环注意:

      1.使用循环嵌套时,内层循环和外层循环的循环控制变量不能相同

  2.循环嵌套结构的书写,最好采用“右缩进”格式,以体现循环层次的关系。

  3.尽量避免太多和太深的循环嵌套结构

如:

循环解决的是:某一个操作重复执行.

如果一个重复的操作需要做N,此时得使用嵌套循环.

  可以吧内层循环看成是一个整体.

三大结构
嵌套循环优化案例
三大结构
嵌套循环案例

输出矩形图案

*****

*****

*****


三大结构

输出三角形图案

*

**

***

****

*****

三大结构

输出九九乘法表

三大结构
三大结构
循环控制语句

break:终止当前所在的循环.stop

break之后的语句执行不了,所以不能编写.

三大结构

continue语句: 继续的意思.skip.

跳过当前的循环,进入下一次循环操作.

break之后的语句执行不了,所以不能编写.

三大结构

return:

表示结束循环所在的方法,方法都结束了,循环结构自然也就结束了

注意:

break、continue、return后面的语句永远没有机会执行,所以不能再跟任何语句,否则编译失败

-------------------------------------------------------

breakreturn都能结束当前循环:

  如果循环之后的操作还得执行:break;

三大结构

控制外层循环:

此时就得使用标签了,标签就是给某个循环起的别名,不过该别名得满足标识符的规范

若要控制外层循环,就在break或continue后面跟上循环的别名就OK了

   如: break <标签名>; continue <标签名>;

三大结构

相关文章: