选择结构:也被称为分支结构。是指选择某一条件后,才能决定下一步的运行方向。
在Java中有两种基本的选择结构语句:if语句和switch语句。
if(条件表达式){
语句体;
}
执行流程:判断条件表达式的结果,当结果为true时,{}中的执行语句体才会执行,否则不执行语句体。
package demo03;
public class Demo01 {
public static void main(String[] args) {
int i=3;
if(i<5) {
System.out.println("结果为:"+i);
}
}
}
if(条件表达式){
语句体1;
}else{
语句体2;
}
执行流程:判断条件表达式的结果,结果为true时,则执行语句体1,为false则执行语句体2。
package demo03;
public class Demo01 {
public static void main(String[] args) {
int i=3;
if(i%2==0) {
System.out.println(i+"为偶数");
}else {
System.out.println(i+"为奇数");
}
}
}
if(条件表达式1){
语句体1;
}else if(条件表达式2){
语句体2;
}
...
else if(条件表达式n){
语句体n;
}else{
语句体n+1;
}
执行流程:判断条件表达式1的结果,结果为true时,则执行语句体1,为false则继续判断条件表达式2的结果,如果为true,则执行语句体2,为false则继续判断下一个条件表达式的结果,以此类推,如果所有的判断条件都为false,则意味着所有的条件均未得到满足,则执行语句体n+1。
package demo03;
public class Demo01 {
public static void main(String[] args) {
int i=120;
if(i<=100&&i>=90) {
System.out.println("成绩优秀");
}else if(i<90&&i>=80){
System.out.println("成绩良好");
}else if(i<80&&i>=70){
System.out.println("成绩中等");
}else if(i<70&&i>=60){
System.out.println("成绩合格");
}else if(i<60&&i>=0){
System.out.println("成绩不合格");
}else {
System.out.println("输入错误!");
}
}
}
switch语句的语法格式:
switch(表达式){
case 目标值1:
执行语句1;
break;
case 目标值2:
执行语句2;
break;
......
case 目标值n:
执行语句n;
break;
default:
执行语句n+1;
break;
}
执行流程:switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,会执行对应的case后的语句,遇到break就会结束。如果没找到任何匹配的值,就会执行default后的语句,然后程序结束。
注意:
package demo03;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入:");
String i=sc.nextLine();
switch (i) {
case "hot":
System.out.println("正在热映");
break;
case "weekly":
System.out.println("每周排行榜");
break;
case "us":
System.out.println("北美排行榜");
break;
case "china":
System.out.println("国产排行榜");
break;
case "highScore":
System.out.println("高分排行榜");
break;
default:
System.out.println("输入有误!");
break;
}
}
}
循环结构:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
for循环语句的基本语法格式:
for(初始化赋值;循环判断条件;自增或自减){
执行语句(循环体)
......
}
执行流程:
for(①;②;④){
③
}
第一步,执行①
第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步。
第三步,执行③
第四步,执行④,然后重复执行第二步。
第五步,退出循环。
package demo03;
public class Demo01 {
public static void main(String[] args) {
// 数组遍历
int[]a= {2,4,6,8,10};
for(int i=0;i
注意:初始化赋值可以写在循环之外,自增自减也可在循环体内,但if()中必须有(;;)才行。
while循环语句的基本语法格式:
while(循环判断条件){
执行语句(循环体)
}
while语句会反复的进行条件判断,只要条件成立,{}内的执行语句就会被执行,直到条件不成立,while循环结束。
package demo03;
public class Demo01 {
public static void main(String[] args) {
// 数组遍历
int[]a= {2,4,6,8,10};
int i=0;
while(i
注意:要注意控制循环条件,避免陷入死循环。
无限循环(死循环)的最简单表达形式:while(true){}
do...while循环语句的基本语法格式:
do{
执行语句(循环体)
}
while(循环判断条件);
关键字do后面{}中的执行语句是循环体。do while循环语句将循环条件放在了循环体的后面。这也就意味着,循环体会无条件执行一次,然后再根据循环条件决定是否继续执行。
package demo03;
public class Demo01 {
public static void main(String[] args) {
// 数组遍历
int[]a= {2,4,6,8,10};
int i=0;
do{
System.out.print(a[i]+" ");
i++;
}while(i
(1)、while和for首先要判断循环条件,满足条件才执行循环体,否则不执行循环体。do..while先执行循环体,无论条件是否满足,都至少执行一次循环体。(do...while实际中用的较少)
(2)、for循环一般用于循环次数确定的,while,do..while用于循环次数不确定的。
(3)、for循环和while循环再多数情况下可以等价转换,但还是有一点小区别的for循环结束,控制循环的变量会在内存中消失,提高内存的使用效率,而while循环结束,该变量则继续存在,不会被回收。如果循环后面的代码涉及到了该变量的使用,可以考虑使用while循环。
双重循环即循环嵌套;是指在一个循环语句的循环体中再定义一个循环语句的语法结构。while、do..while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环。语法格式如下:
for(初始化赋值;循环判断条件;自增或自减){
……
for(初始化赋值;循环判断条件;自增或自减){
执行语句
……
}
……
}
package demo03;
import java.util.Arrays;
public class Demo01 {
public static void main(String[] args) {
// 数组遍历
int[]a= {2,4,6,8,10};
for(int i=0;ia[j+1]) {
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(a));
}
}
跳转语句用于实现循环执行过程中程序流程的跳转,在java中的跳转语句有break语句和continue语句。
在switch条件语句和循环语句中都可以使用break语句。
当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
当它出现在循环语句中,作用是跳出循环,执行循环外代码。
continue语句只能用在循环语句中,它的作用是终止本次循环,执行下一次循环。在while 和 do while语句中continue语句跳转到循环判断条件处开始继续执行,而在for语句中continue语句跳转到迭代语句处开始继续执行。
注意: