开发java流程步骤 (java基础之流程控制含面试题)

本章学习流程控制语句,流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。控制语句分为三类:顺序、选择和循环。

上一章讲解的数据类型和运算符是编程中的“砖块”,是编程的基础。要想开始正式编程,还需要有“水泥”,把“砖块”粘到一起,最终形成“一座大厦”。这个“水泥”就是本章的控制语句。

“顺序结构”代表“先执行a,再执行b”的逻辑。比如,先找个女朋友,再给女朋友打电话;先订婚,再结婚;

“条件判断结构”代表“如果…,则…”的逻辑。比如,如果女朋友来电,则迅速接电话;如果看到红灯,则停车;

“循环结构”代表“如果…,则重复执行…”的逻辑。比如,如果没打通女朋友电话,则再继续打一次; 如果没找到喜欢的人,则再继续找。

java和c的流程控制语句区别,java插件开发流程

顺序结构即按照书写顺序执行每一条语句,比较简单,不是我们的重点。本章研究的重点是“选择结构”和“循环结构”。

很神奇的是,三种流程控制语句就能表示所有的事情!不信,你可以试试拆分你遇到的各种事情。实际上,任何软件和程序,小到一个练习,大到一个操作系统,本质上都是由“变量、选择语句、循环语句”组成。

这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达。上述两种结构组成的程序可以解决全部的问题,所以任何一种高级语言都具备上述两种结构。

因此,本章是大家真正跨入编程界的“门槛”,是成为“程序猿”的“门票”。

一、选择结构

在还没有知道Java选择结构的时候,我们编写的程序总是从程序入口开始,顺序执行每一条语句直到执行完最后一条语句结束,但是生活中经常需要进行条件判断,根据判断结果决定是否做一件事情,这就需要选择结构。

选择结构用于判断给定的条件,然后根据判断的结果来控制程序的流程。主要的条件判断结构有:if结构和switch结构。而if结构又可以分为if单分支结构、if-else双分支结构、if-else if-else多分支结构。

1.1 if单分支结构

语法结构:

java和c的流程控制语句区别,java插件开发流程

if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。流程图如图所示。

java和c的流程控制语句区别,java插件开发流程

if单选择结构流程图

使用if语句实现掷*子骰**游戏

java和c的流程控制语句区别,java插件开发流程

Math类的使用> java.lang包中的Math类提供了一些用于数学计算的方法。> Math.random()该方法用于产生0到1区间的double类型的随机数,但是不包括1。int i = (int) (6 * Math.random()); //产生:[0,5]之间的随机整数

新*雷手**区> 如果if语句不写{},则只能作用于后面的第一条语句。> 强烈建议,任何时候都写上{},即使里面只有一句话!

1.2 if-else双分支结构

语法结构:

java和c的流程控制语句区别,java插件开发流程

当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。流程图如图所示。

java和c的流程控制语句区别,java插件开发流程

java和c的流程控制语句区别,java插件开发流程

条件运算符有时候可用于代替简单的if-else语句。

1.3 if-else if-else多分支结构

语法结构:

java和c的流程控制语句区别,java插件开发流程

当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。流程图如图所示。

java和c的流程控制语句区别,java插件开发流程

if-else if-else多分支结构流程图

根据年龄判断人生阶段

java和c的流程控制语句区别,java插件开发流程

if-else if-else多分支结构既可以实现区间判断的情况,也适用等值判断的情况。而下面讲解的switch语句仅适用等值判断的情况。

1.4 switch多分支结构

语法结构:

java和c的流程控制语句区别,java插件开发流程

switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任一case值不匹配,则进入default语句(如果存在default语句的情况)。

根据表达式值的不同可以执行许多不同的操作。 switch语句中case标签在JDK1.5之前必须是整数(long类型除外)或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String)。

大家要注意,当布尔表达式是等值判断的情况,可以使用if-else if-else多分支结构或者switch结构,如果布尔表达式区间判断的情况,则只能使用if-else if-else多分支结构。

switch多分支结构的流程图如图所示。

java和c的流程控制语句区别,java插件开发流程

switch多分支结构流程图

根据分数给出等级

java和c的流程控制语句区别,java插件开发流程

模拟运算器

java和c的流程控制语句区别,java插件开发流程

作业

1. Math.random()是返回[0,1)之间的随机浮点数,需要[10,15]之间的随机数,如何通过Math.random()获取。

2. 完成课堂上的“掷*子骰**”游戏。

3. 键盘输入一个圆的半径或者随机生成一个半径,计算出圆的面积、周长。比较面积和周长的数字,并打印出不同的提示。

4. 生成[0,120]随机的年龄,然后根据不同的年龄段输出相应的语句(参考课上代码)

5. 生成[0,100]之间的分数。如果90以上(含90)则输出“A”,如果80-89输出“B”,如果70-79输出“C”,60-69之间“D”,60以下是“E”。

二、循环结构

2.1循环的引入

问题1:输出Hello Java 1000次

java和c的流程控制语句区别,java插件开发流程

问题2:计算1+2+3....+100的和

java和c的流程控制语句区别,java插件开发流程

总结:什么时候使用循环

重复执行某个操作很多次,使用循环可以简化代码

2.2 while循环

语法结构:

java和c的流程控制语句区别,java插件开发流程

在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。

语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。

while循环结构流程图如图所示。

java和c的流程控制语句区别,java插件开发流程

while流程图

java和c的流程控制语句区别,java插件开发流程

总结 1:一定要明白while循环的语法结构

循环条件:i <= 100

循环体:{sum += i; i++;}

循环变量:i 循环体中要有改变循环变量值的操作,否则会导致死循环

总结2:一定要明白while循环的执行过程

2.3 do-while循环

语法结构:

do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while循环的循环体至少执行一次。do-while循环结构流程图如图所示。

java和c的流程控制语句区别,java插件开发流程

do-while流程图

java和c的流程控制语句区别,java插件开发流程

总结1:while循环和do-while循环区别

  • while循环先判断再循环,可能循环体一次也没有执行
  • do-while循环先执行再判断,循环体至少执行一次
  • 如果while循环第一次判断为真,两种循环无差别;两种循环效率上没有差别

总结2:do-while循环的适用场合:

do{

考试;

判卷;

}while(不及格);

如果使用while循环实现:

考试;

判卷;

while(不及格){

考试;

判卷;

}

2.4 for循环

语法结构:

java和c的流程控制语句区别,java插件开发流程

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。

  • 初始化部分设置循环变量的初值
  • 条件判断部分为任意布尔表达式
  • 迭代因子控制循环变量的增减

for循环在执行条件判定后,先执行的循环体部分,再执行步进。

for循环结构的流程图如图所示。

java和c的流程控制语句区别,java插件开发流程

for循环流程图

java和c的流程控制语句区别,java插件开发流程

总结1:一定要明白for循环的语法结构

for( 循环变量初始化; 循环条件 ; 改变循环变量的值){

循环体

}

总结2:三种循环结构到底使用哪一个

循环次数固定,建议使用for

循环次数不固定

先执行再判断,建议使用do-while

先判断再执行,使用while

实际开发,for使用频率高,然后是while,最后是do-while

总结3:循环内部定义变量

可以在for循环的表达式1中定义变量,变量的作用范围仅限于该for循环,可以减少变量在内存中存在的时间

总结4:for是三种循环中最灵活的

表达式1,表达式2,表达式3可以省略部分或者全部,但是;不可少,如果省略,也需要写到其他位置,这是结构的变化,语句没有减少。

总结5:使用效率最高的方式计算1+2+3+4....+100=?

方法1:(1+100)*100/2

方法2:0+1+2+3+4....+100=?

方法3:100*101/2=5050

注意:循环就是欺负计算机运算速度快,任劳任怨;循环只是减轻了程序员编码的负担,没有减轻机器的负担。

2.5 循环语句更多练习

练习1:输出1-1000之间能被5整除的数,且每行输出7个。

功能1:输出1-1000之间的数

功能2:输出1-1000之间能被5整除的数

功能3:输出1-1000之间能被5整除的数,且每行输出7个

java和c的流程控制语句区别,java插件开发流程

练习2:给定一个10进制数,转换成二进制数并输出。

分析1:算法

1.给定一个十进制数,作为被除数

2.循环

被除数对2取余数,余数作为二进制位,商作为下一次运算的被除数,

被除数等于0吗

不等

被除数对2取余数,余数作为二进制位,商作为下一次运算的被除数,

被除数等于0吗

不等

被除数对2取余数,余数作为二进制位,商作为下一次运算的被除数,

被除数等于0吗

.....

等于0 结束

3. 余数倒着写得到二进制

分析2:循环的提取

1.不断重复的对2取余数,不断的重复对2整除 使用循环来实现

2.循环次数不固定 排除for循环

3.先操作在判断新的被除数是否为零,可以使用do-while循环

4.循环条件: 被除数等于0吗

5.循环体:被除数对2取余数,余数作为二进制位,商作为下一次运算的被除数

分析3:小技巧,如何实现二进制位逆向获取

result = mod+result ;

java和c的流程控制语句区别,java插件开发流程

作业

1. 计算1-100之间所有数字的和,所有偶数的和,所有奇数的和。

2. 输出0-120之间的数字,打印出能被5整除的数字。

3. 输出0-130之间的数字,每行显示7个数字。

4. 使用循环实现十进制数到二进制数的转换

三、循环控制语句

3.1 break语句

在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。

java和c的流程控制语句区别,java插件开发流程

本来是要循环100次的,结果当i=77的时候,sum>=3000,此时break,意味着这后续的23次不执行了,提前结束循环。

break语句可以出现在循环和switch语句中

return语句作用:结束当前方法,和循环没有关系;每个方法最后都会有一个return

3.2 continue

continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

java和c的流程控制语句区别,java插件开发流程

本来是循环100次的,使用了continue还是循环100次;当i=1,2,3,4,因为i%5!=0,不执行循环体后续的语句;当i=5,因为i%5==0,执行循环体后续的语句

注意事项continue用在while,do-while中,continue 语句立刻跳到循环首部,越过了当前循环的其余部分。continue用在for循环中,跳到for循环的迭代因子部分。

3.3 循环控制语句更多练习

练习:请输入10个整数,或者输入 999 中止输入。判断其中正数的个数并输出,同时要求输出退出的状态(是10次退出,还是999退出)

迭代1:请输入10个整数,判断其中正数的个数并输出

java和c的流程控制语句区别,java插件开发流程

迭代2:请输入10个整数,或者输入 999 中止输入,判断其中正数的个数并输出

java和c的流程控制语句区别,java插件开发流程

迭代3:同时要求输出退出的状态(是10次退出,还是999退出)

java和c的流程控制语句区别,java插件开发流程

作业

1. 1+2+3....+100,当和超过3000时退出循环

2. 使用continue实现输出1--100直接能被5整除的数

3. 请输入10个整数,或者输入 999 中止输入。判断其中正数的个数并输出,同时要求输出退出的状态(是10次退出,还是999退出)

四、多重循环

在一个循环语句内部再嵌套一个或多个循环,称为多重循环/嵌套循环。while、do-while与for循环可以任意嵌套,可以嵌套任意多层。一般工作中多见的就是两层。

4.1 多重循环

打印矩形

java和c的流程控制语句区别,java插件开发流程

思路: 大循环:输出四行

循环体:

1.一行20个空格(小循环)

2.输出一行10个(小循环)

3.换行

java和c的流程控制语句区别,java插件开发流程

总结:一定要明白多重循环的执行过程

java和c的流程控制语句区别,java插件开发流程

打印平行四边形

java和c的流程控制语句区别,java插件开发流程

java和c的流程控制语句区别,java插件开发流程

打印三角形

java和c的流程控制语句区别,java插件开发流程

java和c的流程控制语句区别,java插件开发流程

打印菱形

java和c的流程控制语句区别,java插件开发流程

java和c的流程控制语句区别,java插件开发流程

百钱买百鸡:

公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

java和c的流程控制语句区别,java插件开发流程

思路1:三重循环

设公鸡i只,母鸡j只,小鸡k值

条件1:百钱 5*i +3*j +k/3 = 100

条件2:百鸡 i+j+k = 100

条件3:小鸡数必须是3的倍数 k%3==0

java和c的流程控制语句区别,java插件开发流程

思路2:二重循环

设公鸡i只,母鸡j只,小鸡100-i-j

循环执行了多少次 20*33*2

java和c的流程控制语句区别,java插件开发流程

4.2 多重循环下的控制语句

功能:有5家衣服专卖店,每家最多购买3件。用户可以选择离开,可以买衣服。最后打印总共买了几件衣服

技能:

1.多重循环

外层循环 5家专卖店 内层循环 每家3件衣服

2.多重循环中使用break

每家(最多)购买3件

迭代1:有5家衣服专卖店,每家购买3件

java和c的流程控制语句区别,java插件开发流程

迭代2:有5家衣服专卖店,每家最多购买3件

java和c的流程控制语句区别,java插件开发流程

迭代3:最多5家衣服专卖店,每家最多购买3件

java和c的流程控制语句区别,java插件开发流程

goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在Java语言中得到正式使用;Java没有goto语句。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子---带标签的break和continue。

“标签”是指后面跟一个冒号的标识符,例如:“label:”。对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。

在 “goto有害”论中,最有问题的就是标签,而非goto, 随着标签在一个程序里数量的增多,产生错误的机会也越来越多。 但Java标签不会造成这方面的问题,因为它们的活动场所已被限死,不可通过特别的方式到处传递程序的控制权。由此也引出了一个有趣的问题:通过限制语句的能力,反而能使一项语言特性更加有用。

java和c的流程控制语句区别,java插件开发流程

作业

1. 使用多重循环实现九九乘法表

java和c的流程控制语句区别,java插件开发流程

2. 使用多重循环打印矩形、平行四边形、三角形、菱形几何图形

3. 使用多重循环实现百钱买百鸡

4. 使用多重循环实现有5家衣服专卖店,每家最多购买3件。用户可以选择离开,可以买衣服。最后打印总共买了几件衣服

五、方法

方法(method)就是一段用来完成特定功能的代码片段,类似于其它语言的函数(function)。

方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。

方法的好处

  • 复用代码,便于修改
  • 直接调用方法,降低难度

5.1方法定义和调用

方法声明格式:

java和c的流程控制语句区别,java插件开发流程

方法的调用方式:

java和c的流程控制语句区别,java插件开发流程

方法的详细说明

  • 形式参数:在方法声明时用于接收外界传入的数据。
  • 实参:调用方法时实际传给方法的数据。
  • 返回值:方法在执行完毕后返还给调用它的环境的数据。
  • 返回值类型:事先约定的返回值的数据类型,如无返回值,必须指定为void。

java和c的流程控制语句区别,java插件开发流程

方法调用的内存分配图

java和c的流程控制语句区别,java插件开发流程

5.2 方法重载

方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。

新*雷手**区重载的方法,实际是完全不同的方法,只是名称相同而已!

构成方法重载的条件:

  • 不同的含义:形参类型、形参个数、形参顺序不同
  • 只有返回值不同不构成方法的重载

如:int a(String str){}与 void a(String str){}不构成方法重载

  • 只有形参的名称不同,不构成方法的重载

如:int a(String str){}与int a(String s){}不构成方法重载

java和c的流程控制语句区别,java插件开发流程

我们见过的方法重载

System. out .println(12);

System. out .println("12");

System. out .println(true);

5.3 方法更多练习

练习:判断并输出1--100之间的素数

什么是素数(质数)

质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。

迭代1:判断一个数是否是素数

java和c的流程控制语句区别,java插件开发流程

完善1:1不是素数

完善2:2是素数

完善3:i<num效率低下 i<=sqrt(num)

迭代2:判断1-100之间有多少个素数并输出所有素数

将判断一个数是否为素数的功能提取为一个方法。

java和c的流程控制语句区别,java插件开发流程

作业

1. 练习方法的定义和调用

2. 练习方法的重载

3. 判断并输出1--100之间的素数

网盘资料:

链接:https://pan.baidu.com/s/1zxHsRTYsgdghNWJLYf5ogQ

提取码:bzbj

私信或留言可获取200G视频+源码+课件哦~