流程控制语句是Java学习中至关重要的一部分,它提供了控制程序步骤的基本手段。让我们开始愉快的学习吧!
上期链接:
从零开始学Java-Day04 彻底搞懂运算符_阿怂Jun的博客-CSDN博客今天我们开始第四天的学习,学习是一个艰苦的过程,让我们努力付出,享受收获吧!这边我放上前几期的链接,希望可以到帮助大家目录内容链接从零开始学Java-Day01Java简介、编写第一个Java程序从零开始学Java - Day01_阿怂Jun的博客-CSDN博客前言: 作为一个非科班毕业的大专生,很高兴能够进入Java这个大家庭。在这里,我会分享一些Java初学阶段所需要知道的一些内容,如果各位感觉有什么写的不对的地方,可以随意指出,我们共同学习,共同进步。.https://blog.csdn.net/weixin_57228654/article/details/121269372
目录
一、顺序结构
二、选择结构
2.1、if语句
2.2、if...else语句
2.3、if...else if语句
2.4、if...else嵌套语句
2.5、switch case 语句
三、循环结构
3.1、while循环
3.2、do...while循环
3.3、for循环
3.4、嵌套循环
3.5、增强for循环
四、循环的跳转
4.1、break
4.2、continue
五、三目运算符
在学习流程控制语句之前,我们需要先了解什么叫结构化程序设计。采用结构化程序设计方法,可使程序的逻辑结构清晰、层次分明、可读性好、可靠性强,从而提高了程序的开发效率,保证了程序质量。
程序的结构一般包含以下3种:
1)顺序结构
2)选择结构
3)循环结构
这3种不同的结构有一个共同点,就是它们都只有一个入口,也只有一个入口。
结构化程序中,最简单的结构就是顺序结构了。所谓的顺序结构,就是按照书写顺序执行语句的程序段。
代码示例:
public class OrderTest { public static void main(String[] args) { System.out.println("我是熊大"); System.out.println("我是熊二"); System.out.println("我是张三"); System.out.println("我是王五"); System.out.println("我是赵六"); } }
运行结果如下:
从这里我们可以看出,打印语句的顺序是从上至下,按照我们书写的语句进行顺序打印的。
二、选择结构选择结构也称为分支结构,在许多实际问题的程序设计中,会根据不同情况选择不同的语句执行。在这种情况下,必须根据某个变量或表达式的值来进行判断,来决定执行哪些语句或者是跳过哪些语句不执行。
2.1、if语句我们先了解一下最基础的if语句:
格式:
if(布尔表达式){
//如果表达式结果为true,执行{}内的语句
}
代码示例:
public class TrueOrFalseTest { public static void main(String[] args) { int num = 20; if (num < 30) { System.out.println("这是if语句"); } } }
运行结果:
2.2、if...else语句这里我们需要知道,如果布尔表达式的值为true时,就好执行if语句中的代码块中的代码,否则会直接执行if语句后的代码 。
格式:
if(布尔表达式){
//如果表达式结果为true,执行此处语句
}else{
//如果表达式结果为false,执行此处语句
}
代码示例:
public class TrueOrFalseTest { public static void main(String[] args) { int num = 20; if (num > 30) { System.out.println("这是if语句"); } else { System.out.println("这是else语句"); } } }
运行结果:
2.3、if...else if语句if语句后面跟着else语句时,当布尔表达式的值为true是,执行if语句的代码块,当布尔表达式的值为false时,执行else语句的代码块。
格式:
if(布尔表达式){
//如果表达式结果为true,执行此处语句
}else if(布尔表达式){
//如果表达式结果为true,执行此处语句
}else{
//如果前面布尔表达式的值都为false,执行此处语句
}
代码示例:
public class TrueOrFalseTest { public static void main(String[] args) { int num = 20; if (num > 30) { System.out.println("这是if语句"); } else if (num < 30) { System.out.println("这是else if语句"); } else { System.out.println("这是else语句"); } } }
运行结果:
2.4、if...else嵌套语句这里需要注意:
1)if语句最多只能有1个else语句,且else语句要在所以的else if 语句之后。
2)if语句可以有多个else if 语句
3)一旦其中某个else if 语句检查为true,其它的else if 及 else 语句都将跳过执行。
使用嵌套的if...else是合法的,也就是说我们可以在一个if...else中嵌套另一个if...else。
public class TrueOrFalseTest { public static void main(String[] args) { int num = 20; if (num > 30) { System.out.println("这是if语句"); } else { System.out.println("这是else语句"); if (num < 30) { System.out.println("这是嵌套的if语句"); } else { System.out.println("这是嵌套的else语句"); } } } }
运行结果如下:
2.5、switch case 语句对于多分支处理还有一种情况,它对一个整型表达式的值进行计算,针对该表达式的不同取值决定执行多路分支程序段中的一支这就是switch结构。switch结构也称为“多路选择结构”。它常与break语句联合使用,在switch语句中使用break语句可以使程序立即退出该结构。
格式:
switch(表达式){
case 选择值1:
语句主体1;
break;
case 选择值2:
语句主体2;
break;
......
default:
语句主体;
}
代码示例:
public class SwitchDemo { public static void main(String[] args) { int x = 20; int y = 5; char oper = '/'; switch (oper) { case '+': System.out.println("x + y = " + (x + y)); break; case '-': System.out.println("x - y = " + (x - y)); break; case '*': System.out.println("x * y = " + (x * y)); break; case '/': System.out.println("x / y = " + (x / y)); break; case '%': System.out.println("x % y = " + (x % y)); break; default: System.out.println("无意义表达式"); } } }
运行结果:
三、循环结构注意:
1)switch语句中的变量类型可以是:byte、short、int 或者 char。从JDK1.7开始,switch也支持String类型。
2)switch可以拥有多个case语句。
3)case语句的值的数据类型必须与变量的数据类型相同。
4)当case语句开始执行时,直到break语句出现才会跳出switch语句。
5)当遇到break语句时,switch语句终止。case语句不必须要包含break语句。如果没有break语句,程序会继续执行下一条case语句,直到出现break语句。
6)switch语句可以包含一个default分支,一般是switch语句的最后一个分支。default分支不需要break语句。
环结构的特点是在给定的条件成立时,反复的执行某一段程序。我们一般将给定条件称作循环条件,被反复循环的程序段为循环体。 循环体可以是复合语句、单个语句或空语句。循环结构包括while循环、for循环,在循环体中也可以包含循环语句,实现循环嵌套。
3.1、while循环while循环语句的执行过程是先判断循环条件,如果循环条件的值为true,则执行循环体重的语句;否则退出循环
格式:
while(循环条件){
循环体
}
代码示例:
public class WhileDemo { public static void main(String[] args) { int i = 1; int num = 0; while (i <= 10) { num += i; i++; } System.out.println("1+2+...+10 = " + num); } }
运行结果:
3.2、do...while循环注意:
1)第一次进入循环时,必须对循环控制变量赋起始值。
2)第一遍循环结束,会重新对循环控制变量赋值(增加或减少),而while循环不会自动更改循环控制变量,所以在while循环时,需要我们自己对循环控制变量进行控制。
3)当while的循环条件固定为true时,会进行无限循环,也就是我们常说的死循环。
有的时候,即使不满足循环条件,我们也需要执行一次循环体内的程序段,所以do...while帮助我们实现了这个功能。和while语句相比,do...while的循环体在前面,循环条件在后面。会先执行一遍循环体内的代码,然后判断循环条件是否满足循环,如果循环添加为true,则进行循环,反之退出循环。
格式:
do{
//循环体
}while(循环条件);
代码示例:
public class DoWhileDemo { public static void main(String[] args) { int i = 1; int num = 0; do { num += i; i++; } while (i <= 10); System.out.println("1+2+...+10=" + num); i = 1; int num2 = 0; do { num2 += i; i++; } while (i >= 10); System.out.println("num2 = " + num2); } }
运行结果:
从这里我们可以看出,当循环条件为true时,正常进入循环。可以当循环条件为false时,循环体内的代码还是运行了一遍。
3.3、for循环除了while 或者 do...while以外,Java还提供了另外一种语句“for循环”,for 循环执行的次数是在执行前就确定的。
格式:
for(初始变量;布尔表达式;初始变量的增减){
循环体
}
代码示例:
public class ForDemo { public static void main(String[] args) { int count = 0; for (int i = 1; i <= 100; i++) { count += i; } System.out.println("1+2+...+100 = " + count); } }
运行结果:
3.4、嵌套循环注意:如果使用for循环时,循环条件为空,则会开始死循环,相当于while循环的循环条件指定为true。例子:
for(;;){
}
嵌套循环,就是在循环语句中又出现了循环语句。可以是嵌套for循环、嵌套while循环、或者混合嵌套循环。这里用九九乘法表举例:
代码示例:
public class ForForDemo { public static void main(String[] args) { char t = 't'; //间隔符 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + (i*j) + t); } System.out.println(); } } }
运行结果:
这里我们分析一波程序的运行流程:
1)外循环:从int i = 1开始,每循环一次i++,循环条件为i <= 9,所以总共会循环9圈。
2)内循环:从int j = 1开始,每次循环j++,循环条件为j <= i,循环圈数根据i的值发生变化。
3)当第一次循环时,外循环i的值为1,因此内循环执行一圈后,内循环结束。
4)外循环开始第二次的循环,此时i的值为2,因此内循环需要执行两遍,内循环结束。
5)以此类推,当外循环执行第9次时,内循环需要执行9次才能结束内循环。同时i++后,i <=9 为false,结束外循环。
在JDK5引入了一种主要用于数组的增强型for循环。
格式:
for(接收数组元素的变量:需要被遍历的数组){
循环体
}
代码示例:
public class ForeachDemo { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; for (int i : arr) { System.out.println("i = " + i); } } }
运行结果:
四、循环的跳转 4.1、break
在while、for、do...while或switch等语句中使用break可以使程序立即退出当前结构,执行该结构下面的语句。break通常用来在适当的时候退出某个循环,或终止某个case并跳出switch结构。
代码示例:
public class BreakDemo { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if (i == 5) { break; } System.out.println(i); } System.out.println("循环提前结束"); } }
运行结果:
这里我们可以看出,在循环中,每循环一次,变量i自增1。当变量 i == 5时,我们执行了 break;语句。程序直接结束了循环,执行循环外的下一条语句了。
4.2、continuecontinue同样适用于所以循环结构。它的作用是直接结束本次循环,跳回到循环的起点,进行下次循环。
代码演示:
public class ContinueDemo { public static void main(String[] args) { int i = 0; while (i <= 10) { if (i % 3 == 0) { i++; //此处进行自增,否则i%3的值会一直为0,从而变成死循环 continue; } System.out.println(i); i++; } } }
运行结果:
五、三目运算符注意:break和continue的区别:break是不管情况如何,都会直接跳出循环。continue是不再执行当前循环的后续语句,直接回到循环的起始处进行下次循环。
这里我们补充一个特殊的运算符:三目运算符,又称为三元运算符。它的运行逻辑类似于if...else语句。例如条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。
"?"运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。
可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为条件是否成立,条件成立为结果1,否则为结果2。
代码示例:
public class TernaryOperatorDemo { public static void main(String[] args) { int x = 10; int y = 20; System.out.println((x + y)==10?"这是正确的表达式":"这是错误的表达式"); //也可以用来赋值 int z = (x + y) == 10 ? 30 : 40; System.out.println("z = " + z); } }
运行结果:
以上就是今天的全部内容了,大家加油!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)