上次的运算符都消化好了吗?每一天都要用到一些哦~

以前有提到过一嘴,程序执行都是从上到下执行的,emm,学到这里,感觉这句话是对的也是错的了……

如果都是一行一行执行下去的话,上节课的例子:

今天上班
我呆在家里

假设今天上班,按照程序,那么执行完第一行,“今天不上班”,是假的呀,再执行第二行……?执行第二行“我呆在家里”……于是应该上班的日子我呆在了家里……我就会被辞了 o(╥﹏╥)o

是不是啊?一行行来执行,就达不到我们想要的目的了~

还有啊,如果打印一个乘法口诀表,难道我们手打 45 行输出代码?于是我们今天学的东西就会解决这个问题了~

还是和上节一样的,搞两个变量先:

int a = 100, b = 0;

顺序结构

顺序结构就是上面说到的那种,从上到下一行行执行。

int c = a - b;
System.out.println(c);

吃完就睡了,真的。

选择结构

选择结构,就是满足了一个条件,我就会选择干一件事情。所以满足条件和不满足条件我们用true和false来代替,所以每个选择里面的条件语句需要用到运算符中的关系运算符以及逻辑运算符了,他们的结果必须是一个布尔值(布尔表达式)(switch语句除外,另行讲述)~

这个结构大体上又可以分成三种:if语句、if…else语句、switch语句。

1. if语句

int c = a - b;
if (a > b) {
System.out.println(c);
}
System.out.println("结束~");

输出结果:

如果不满足呢?

int c = a - b;
if (a < b) { // 不满足
System.out.println(c);
}
System.out.println("结束~");

输出结果:

跳过了哦~~

2. if…else语句

if (a > b) {    // 满足
System.out.println("对的");
}else {
System.out.println("错了");
}
System.out.println("结束~");

输出结果:

错误情况请自己试验一下哦~

此外,if…else还可以有多个分支的哦:

if (a < b) {
System.out.println("a小于b");
}else if( a == b){
System.out.println("相等");
}else {
System.out.println("a大于b");
}

输出结果:

此外,如果if语句后面仅有一句代码,那么可以省略大括号(但是一般来说不建议,少括号容易出错哦)

3. switch语句

switch语句和上面的那几个不一样~它就像打电话一样,我拨的号码是哪个,哪个号码就会接到电话:(所以switch只支持整型以及char类型的变量!而且整型只包括byte、short、int!)

int d = 10000;
switch (d) {//只支持整型以及char类型的变量!而且整型只包括byte、short、int!
case :
System.out.println("中国联通");
break;
case 10086:
System.out.println("中国移动");
break;
case 10000: //拨打的这个号码
System.out.println("中国电信");
break;
default:
System.out.println("打错了");
break;
}

输出结果:

因为d是10000,输出了中国电信~。

循环结构

循环就是重复做意见事情,同一句代码要写10句的话,用循环绝对是最好的选择~做循环需要三个条件:第一、循环的变量,第二、循环体(循环的内容),第三、循环的终止条件(啥时候退出循环)。Java中有三种循环:while、do…while、for循环。

1. while循环

先说语法:

while(布尔表达式) {
程序语句
}

再举个栗子:

while (b<5) {    //循环终止条件
System.out.println("第"+ (b+1) +"次循环"); //循环体
b++; //循环变量
}

第一次判断:b=0<5的时候,是第1次循环,b++,继续循环

第二次判断:b=1<5的时候,是第2次循环,b++,继续循环

...

第五次判断:b=4<5的时候,是第5次循环,b++,继续循环

第六次判断:b=5<5的时候,不满足条件

so,while先判断再运行循环体。这里一共进行了六次判断,五次运行循环体。

输出结果:

另外,如果布尔表达式一直为真,那么就会一直循环,造成“死循环”,出不去的情况。

while (true) {    // 一直true,一直循环
System.out.println("第"+ b +"次循环");
b++;
}

就会一直输出,除非手动停下程序或者内存不足……

2. do…while循环

先上语法:

do {
程序语句;
} while (布尔表达式);

再来代码:

do {
System.out.println("do while 第"+ b +"次循环");
b++;
} while (b<5);

b=0的时候,是第1次循环,b++,第一次判断:b=1<5,继续循环

b=1的时候,是第2次循环,b++,第二次判断:b=2<5,继续循环

...

b=4的时候,是第5次循环,b++,第五次判断:b=3<5,停止循环

so,dowhile先运行循环体再做结果的判断,这里一共是五次判断,五次运行循环体。

输出结果:

到这里就衍生了一个疑问,while好还是少做一次判断的dowhile好呢?

其实具体还是得看业务需求~(但是还是推荐优先使用while)

主要是【如果我的变量一开始就不满足终止条件,使用dowhile的话仍然会执行一次,才会去判断条件成立与否。】

3. for循环

for循环与while类似,先进行判断,再执行。语法:

for (表达式1; 表达式2; 表达式3) {
执行语句
}
表达式1:循环变量赋初值
表达式2:循环终止条件(布尔表达式)
表达式3:循环变量的增、减

再来段代码:

for (int i = 0; i < 5; i++) {
System.out.println("for 第"+ (i+1) +"次循环");
}

b=0的时候,第一次判断:b=1<5,b++,是第1次循环,然后继续循环

b=1的时候,第二次判断:b=2<5,b++,是第2次循环,然后继续循环

...

b=4的时候,第五次判断:b=3<5,b++,是第5次循环,停止循环。

输出结果

for循环也是先进行判断,然后再执行循环体。若 表达式1、表达式2、表达式3都不写,则会陷入死循环。

4. 循环嵌套

循环和选择语句一样,也是可以嵌套使用的~比如

for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");// \t转移字符——制表符
}//打印完一行之后换行
System.out.println();//println自带换行
}

i的第一次循环,i = 1,i<=9,

     j的第一次循环,j=1, j<=i(1),输出 1*1=1,

    跳出 j 循环,输出换行。

i的第二次循环,i = 2,i<=9,

     j的第一次循环,j=1, j<=i(2),输出 1*2=1,

     j的第二次循环,j=2, j<=i(2),输出 2*2=3,

    跳出 j 循环,输出换行。

……

那么输出的就是一个乘法口诀表了:

break & continue语句

break:退出当前循环或终止switch语句序列。

continue:中断当前循环但不退出当前循环,而是继续进行。

break语句

用上面的乘法口诀改吧改吧:

for (int i = 1; i < 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
System.out.println("j==2,结束了");
break;
}
System.out.println("j="+j);
} }
System.out.println("外层才结束");

输出结果:

发现里面结束了两次,每次都没有输出j=3,这样就说明,break能结束当前的循环,而不能结束外面的循环(就是说它只管他自己在的地方)

continue

再用上面的break改吧改吧:

for (int i = 1; i < 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
System.out.println("结束了");
continue;
}
System.out.println("j="+j);
} }
System.out.println("外层才结束");

输出结果:

ei?换成continue之后,j=3也输出了……这样就说明,continue是只结束了j=2的这次循环,并没有跳出j的循环。就等于是运行到 j=2 的时候跳过了,接着下一次循环。

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

以我的语文水平,就够解释到这个程度了……见谅。

以上,阿里嘎多,20190415 from ahanwhite。

Java 基础(8)——流程控制的更多相关文章

  1. Java基础-程序流程控制第二弹(循环结构)

    Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...

  2. Java基础-程序流程控制第一弹(分支结构/选择结构)

    Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...

  3. Java 基础 程序流程控制 (下)

    Java 程序流程控制 (下) 此篇单独对循环结构的知识点进行整理: 之前讲到循环结构分为:for循环,while循环,do...while循环三种最基本的循环结构:在JDK1.5以后的版本还提供了f ...

  4. Java 基础 程序流程控制 (上)

    Java程序流程控制 (上) Java程序大体分为三种流程控制结构:顺序结构.分支结构.循环结构 顺序结构 程序由上到下的逐行执行,中间没有任何跳转和判断语句. 示例代码如下: public clas ...

  5. Java基础总结--流程控制

    Java流程控制* 顺序结构--最常见的执行情况,语句按照出现的先后次序依次执行.* 判断结构--对条件进行判断,执行相应的语句.有三种常见的形式< if(判断条件){语句;}--为真执行语句, ...

  6. Java基础之流程控制

    一.顺序结构 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. if-else-if 语句 语法: if(条件){ 当条件为true时,执行大括号内的代码 }el ...

  7. Java基础-6流程控制

    一).选择控制: 选择控制分为两种:if...else...和switch 单分支结构:这是最简单的一种选择结构,它只是简单的判断某个条件是否成立,如果成立就执行一段代码,语句形式为: if(条件表达 ...

  8. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  9. JAVA入门基础及流程控制

    JAVA入门基础及流程控制 数据类型 位 存储单位 eg:0001 0011 八位 字节 byte 处理数据单位 一字节等于八位 eg:1b=0011 0001 类变量: static int num ...

  10. Java中的流程控制(一)

    程序的流程控制(一) 关于Java程序的流程控制(一) 从结构化程序设计角度出发,程序有三种结构: 顺序结构 选择结构 循环结构 1.顺序结构 就是程序从上到下一行行执行,中间没有判断和跳转. 2.i ...

随机推荐

  1. HDU6184【Counting Stars】(三元环计数)

    题面 传送门 给出一张无向图,求 \(4\) 个点构成两个有公共边的三元环的方案数. 题解 orz余奶奶,orz zzk 首先,如果我们知道经过每条边的三元环个数\(cnt_i\),那么答案就是\(\ ...

  2. bzoj4241: 历史研究(回滚莫队)

    传送门 这是一个叫做回滚莫队的神奇玩意儿 是询问,而且不强制在线,就决定是你了莫队 如果是每次插入一个数是不是很简单? 然而悲剧的是我们莫队的时候不仅要插入数字还要删除数字 那么把它变成只插入不就行了 ...

  3. Azure自定义角色实现RBAC

    简要说明: 当前Azure Portal上只能针对订阅或具体某一资源,实现访问控制,也就是对某一具体资源实现访问/使用/删除,但无法实现创建.例如:当前的需求为,新添加用户只具有对CDN服务的管理使用 ...

  4. 使用vue+webpack从零搭建项目

    vue到现在已经成为一个热门的框架,在项目实践当中,如果想要创建一个新项目,通常都会使用vue-cli的脚手架工具,毋容置疑能够方便很多,很多东西也不需要自己亲自去配置.都知道,脚手架其实是vue结合 ...

  5. 2016级算法第二次上机-D.Bamboo的饼干

    Bamboo的饼干 分析 从两个数组中各取一个数,使两者相加等于给定值.要注意去重和排序 难度不大,方法很多,基本只要不大于O(n^2 ) 的都可以过.本意想考察二分搜索 还可以借助stl中的map, ...

  6. six

    团队序号:6组 团队名称:拯救地球小分队 团队项目的码云地址:https://gitee.com/lwj5950/seflash 此次博客撰写人姓名:刘威骏 学号:2017*****7168 团队中的 ...

  7. tomcat在bin下的startup.bat下启动报错

    测试环境是否安装配置好. 如果环境配置好.报错如下:或者是730013 -----------解决问题:是因为tomcat端口被占用.查看是否启动两个tomcat

  8. 基础篇:6.5)形位公差-公差带 Tolerance Zone

    本章目的:了解14个形位公差的公差带形状,其从属关系. 1.定义 公差带-实际被测要素允许变动的区域. 它体现了对被测要素的设计要求,也是加工和检验的根据. 2.公差带四大特征-形状.大小.方向.位置 ...

  9. ONTAK2010 Peaks加强版(离线&在线)

    题面 弱化版:luogu 强制在线版:bzoj 题解 本题有两种解法 离线算法:线段树合并 先看一道简单题[USACO18JAN]MooTube 本题就是在此基础上求第\(k\)高的点 首先把询问和路 ...

  10. 【Python】二进制转ASCII码小脚本

    #coding:utf-8 #developed by carrypan! import binascii import optparse def main(): usage="%prog ...