小黄鸭系列java基础知识 | 基础语法:流程控制
基础语法:流程控制
前言
今天我们要探讨的是java
的流程控制,流程简单来说就是就是做一件事的步骤,比如我们要创建一个java
项目,第一步打开ide
工具,第二步创建项目,第三步创建类,这就是一个流程,今天分享的就是java
的流程控制语句,当然,对于上面简单的流程是不需要任何流程控制的,因为每一步都是确定的,但是在现实生活中大部分事务的流程都是复杂的,这时候流程控制就显得尤为重要了。就拿我每周更新公众号这件事来说,周一到周五,每天发送每日读书札记图片,如果是周六,推送一篇文章,发送每日读书笔记,没有特殊情况基本上都是这样,用流程图描述的话应该是这样的:
上面这个流程很简单,但是已经包含了我们今天要讲的流程控制的两部分:条件语句和循环语言。“今天有特殊情况吗”、“今天是周六吗”,这些都是条件语句,因为每天都要做这个事,所以整个事件又是一个不断循环重复的事件,概念层面的介绍就到这里,讲的好不好就这样😂,我们开始今天的核心内容。
流程控制
条件语句
条件语句简单讲就是根据不同的条件(逻辑判断),执行不同的操作
if语句
if
是最简单的条件语句,也是最常用的条件语句
语法结构
if(条件语句) {
要执行的操作
}
示例
int i = 0
if(i == 0) {
System.out.print("i的值是0");
}
示例输出结果:
i的值是0
if-else语句
if-else
是if
的增强版,他分为两块,一块是满足条件执行的操作,一块是不满足条件执行的操作
语法结构
if(条件语句) {
满足条件的操作
} else {
不满足条件的操作
}
if-else本身也是支持多层嵌套的,具体语法如下:
if(条件语句) {
满足条件的操作
} else if(条件语句2) {
满足条件2的操作
} else if(条件语句2) {
满足条件3的操作
.......
} else if(条件语句n){
满足条件n的操作
}else {
不满足条件的操作
}
示例
int a = 6;
if(a > 0) {
System.out.println("a大于0");
} else {
System.out.println("a小于等于0");
}
示例输出结果:
a大于0
示例2
int a = 6;
if(a > 10) {
System.out.println("a大于10");
} else if(a > 5) {
System.out.println("a小于10大于5");
} else if(a > 0) {
System.out.println("a小于5大于0");
} else {
System.out.println("a小于等于0");
}
示例输出结果
a小于10大于5
switch语句
相比于if
,switch
更适合精确匹配的流程控制,因为switch
需要的是条件值,而不是条件语句。这里需要注意的是,条件值目前只能是char
、byte
、short
、int
、String
、enum
、Character
、Byte
、Short
、Integer
,而且如果你的jdk版本是在JDK1.7
以前的,是不支持String
的,String
是1.7
增加的。
语法结构
switch (条件值) {
case 匹配值1:
// 当为匹配值1时,要执行的操作
break;
case 匹配值2:
// 为匹配值2时,要执行的操作
break;
case 匹配值3:
// 为匹配值3时,要执行的操作
break;
default:
// 默认值,即不等于上面所有值是执行的操作
break;
}
示例
int a = 3;
switch (a) {
case 1:
// 当a为1时,要执行的操作
System.out.println("a的值是1");
break;
case 2:
// a为2时,要执行的操作
System.out.println("a的值是2");
break;
case 3:
// a为3时,要执行的操作
System.out.println("a的值是3");
break;
default:
// 默认值,即a不等于上面所有值是执行的操作
System.out.println("a的值不在1、2、3中");
break;
}
示例输出结果:
a的值是3
为什么每个case
后面都要加一个break
,因为不加的话,从他匹配到的case
开始,后面所有case
的代码都会被执行,如果把上面的break
都拿掉的话,那最后的输出结果就会变成:
a的值是3
a的值不在1、2、3中
有兴趣的小伙伴可以自己去尝试哦
三目运算
三目运算一般出现在赋值语句中,需要注意的是,在使用三目运算的时候,一定要做NPE
(空指针)判断
语法结构
要赋值的变量 = 条件语句 ? 条件为真的值 : 条件为假的值
示例
int a = 3;
int c = a > 0 ? a : 0;
System.out.println("c = " + c);
示例执行结果:
c = 3
循环语句
编程的目的就是为了提高效率,减少重复操作,所以循环语句为这个目的提供了可能,我无法想象没有循环语句的编程世界……
for循环
for
循环是最基本最简单的循环语句,基本上所有的语言都有for
而且结构也大同小异
语法结构
for(初始值; 执行循环的条件; 执行完循环要进行的操作) {
要循环的操作(循环体)
}
示例
for (int i = 0; i < 1000; i++) {
System.out.println("我是云中志");
}
示例运行结果:
我是云中志
...省略999个...
简单说一下,上面的示例就是循环打印输出“我是云中志”,如果不用循环操作,那我得累死(手写1000个System.out.println
,我怕是要疯了)。上面的循环条件是i < 1000
,每次循环完成后i
加1,当然你也可以这样写:
int i = 0;
for (; i < 1000;) {
System.out.println("我是云中志");
i++;
}
如果你连中间的循环条件也不想要了,那个他就变成了死循环,他可以一直执行下去,直到地老天荒😂
for (;;) {
System.out.println("我是云中志");
}
while循环
和for
循环类似
语法结构
while(循环执行条件) {
需要循环执行的操作(循环体)
}
示例
int k = 0;
while (k < 1000) {
System.out.println("我是云中志");
i++;
}
有没有感觉和我们上面变形的for
很像
while
的死循环
while(true) {
System.out.println("我是云中志");
}
do-while循环
和前面两个循环不同的是,do-while
循环是先执行后判断,所以对于do-while
循环而言,他至少会执行一次
语法结构
do {
需要循环的操作(循环体)
} while(执行循环的条件)
示例
int m = -3;
do {
System.out.println("我是云中志");
m++;
}while (m > 0);
System.out.println("m的值:" + m);
最终的运行结果:
我是云中志
m的值:-2
虽然这里的m
小于0,但是循环依然依然执行了一次,这也是do-while
和其他循环最大的不同
结语
今天我们介绍了java
的流程控制,主要内容就是条件语句和循环操作,总体来说流程控制部分还是很简单的,但是简单并不意味着不重要,可以这样说我们所有的业务操作,都离不开流程控制,离开了流程控制,那绝大多数业务是没有办法完美实现的,所以在初学阶段一定要掌握好流程控制。下周我们要回到数据类型,探讨数据类型的包装类。好了,今天就到这里吧。小伙伴们放假回家了吗?