JavaSE基础——(4)顺序、选择、循环结构与控制跳转语句

目录

一、顺序结构

二、选择结构

2.1 if语句

2.2 switch语句

三、循环结构

3.1 for语句

3.2 while语句

3.3 do while语句

3.4三种循环语句的区别

四、控制跳转语句

4.1 continue语句

4.2 break语句

4.3 return语句


Java中的流程控制语句即可以控制程序的执行流程。

一般可以分为三类:

  • 顺序结构
  • 选择结构
  • 循环结构

一、顺序结构

顺序结构非常简单,一行一行地运行代码。

从上向下,依次执行。

我们用下列代码测试顺序结构的执行步骤:

System.out.println(1);
System.out.println(0);
System.out.println(2);
System.out.println(4);

下面是执行的结果:

二、选择结构

选择结构一般分为:

  • if语句
  • switch语句

2.1 if语句

if语句的执行流程是会先计算表达式的值,

如果表达式的返回值为true,则执行if条件后面的语句,

如果表达式的返回值为false,若有else语句,则执行else语句后面的语句。其一般形式如下:

if(Comparison expression 1){
    do A;
}
else{
    do B;
}

需要注意的是,if后面的判断语句返回值必须是boolean类型,不能和C++那样里面直接写一个非0的数就代表为true。

我们对选择结构进行测试:

public class Main {
    public static void main(String[] args){
        boolean workhard=true;
        if(workhard)
            System.out.println("Success :)");
        else
            System.out.println("Fail :(");
    }
}

下面是结果:

如果我们希望if语句能处理多种结果的情况,那么光if-else这两个分支显然不够用,这时我们就需要使用到else if语句:

if(Comparison expression 1){
    do A;
}
else if(Comparison expression 2){
    do B;
}
else if(Comparison expression 3){
    do C;
}
else{
    do D;
}

其执行流程为先看比较表达式1,如果为true则执行语句A,如果为false则看比较表达式2,

比较表达式2若为true则执行语句B,若为false则看比较表达式3,

比较表达式3若为true则执行语句C,若为false则直接执行语句D。

我们用一段代码来联系一下else if语句的使用:

public class Main {
    public static void main(String[] args){
        int age=21;
        if(age<18)
            System.out.println("Child");
        else if(age<50)
            System.out.println("Adult");
        else
            System.out.println("The aged");
    }
}

下面是程序的运行结果:

和后面的swtich语句相比,if语句更适合判断区间或者范围的时候使用。

2.2 switch语句

相比于if语句,switch语句更适合判断固定值的时候使用,一般形式如下:

switch(expression e){
    case value1:
        do code1;
        break;
    case value2:
        do code2;
        break;
    ...
    ...
    default:
        do codeN+1;
        break;
}

其中表达式e的数据类型可以是基本数据类型和引用数据类型,

基本数据类型有byte、short、char、int,(主要是可以直接转换为int类型的数据并且不损失精度 )

引用数据类型有枚举类型(JDK1.5)与String字符串(JDK1.7)

我们以String类型为例进行代码测试:

public class Main {
    public static void main(String[] args){
        String language="Java";
        switch (language){
            case "Java":
                System.out.println("Java天下第一");
                break;
            case "C++":
                System.out.println("C++天下第一");
                break;
            case "C":
                System.out.println("C语言天下第一");
                break;
                default:
                    System.out.println("Python天下第一");
        }
    }
}

结果如下:

其中有几个要注意的问题:

  • case后面的一定要是常量,不能为变量
  • break语句一定要写, 要不然可能会执行后面case的语句
  • default语句可以写在任意位置,但是建议写在最后
  • switch语句的结束条件为遇到break或者遇到switch的右大括号

三、循环结构

循环结构主要有:for、while、do while三种。

3.1 for语句

for语句的格式一般如下:

for(初始条件语句;条件表达式;循环后操作表达式){
    循环语句;
}

其执行流程和C++一样,首先会执行初始条件语句,紧接着就会执行条件表达式,

如果条件表达式为false,则结束循环,如果为true,就执行循环语句,然后接着执行循环后操作表达式,

然后再对条件表达式进行判断,如果为false则结束循环,如果为true则执行循环语句和循环后操作表达式以此循环。

我们以循环输出10次Helloworld为例,对for循环进行代码实现:

public class Main {
    public static void main(String[] args){
        for(int i=0;i<10;i++){
            System.out.println("HelloWorld!");
        }
    }
}

下面是输出的结果:

3.2 while语句

while语句的格式一般如下:

初始化语句;
while(判断条件语句){
    循环体语句;
    控制条件语句;
}

执行步骤一般先执行初始化语句,

然后执行判断条件语句,如果为false则结束循环,

如果为true则执行循环体语句和控制条件语句,

结束后再执行判断条件语句以此循环。

我们还是以输出10次Helloworld为例进行while语句的实验:

public class Main {
    public static void main(String[] args){
        int count=0;
        while(count<10){
            System.out.println("HelloWorld!(while语句)");
            count++;
        }
    }
}

运行结果如下图:

3.3 do while语句

do while语句和while语句非常像,其一般形式如下:

初始化语句;
do{
    循环体语句;
    控制条件语句;
}while(条件控制语句);

一般步骤先执行初始化语句,然后直接进入循环体,执行一次循环体语句和控制条件语句,

最后判断条件控制语句的真假,如果为false则结束循环,如果为真则进入下一次循环,再执行循环体语句和控制条件语句以此循环。

我们还是用helloworld测试do while语句:

public class Main {
    public static void main(String[] args){
        int count=0;
        do{
            System.out.println("HelloWorld!(do while语句)");
            count++;
        }while(count<10);
    }
}

其结果如下:

3.4三种循环语句的区别

  • do while语句至少会执行一次循环体的语句,而while和for循环则会先判断条件是否成立,有可能一次循环体语句都不执行就直接结束。
  • 如果控制条件的变量需要在循环外继续使用,则用while循环,否则都用for循环,在for循环初始条件语句定义控制条件变量,结束就释放,提高内存使用效率。

四、控制跳转语句

控制跳转语句一般只会出现在switch语句和循环语句中,

其作用是让程序跳出switch选择结构体或者跳出循环体然后顺序执行后续的语句,

控制跳转语句一般有continue语句、break语句和return语句。

4.1 continue语句

continue顾名思义就是继续的意思,只能出现在循环体中出现,

当程序执行到循环体中的continue语句时,会直接进入下一次循环,而不执行continue语句后面的循环体语句。

我们以输出0到10的所有奇数为例体会continue语句的作用:

public class Main {
    public static void main(String[] args){
        for(int i=0;i<=10;i++){
            if(i%2==0)
                continue;
            System.out.println(i);
        }
    }
}

运行结果如下:

可以看到当i模2的余数为0时(即i为偶数时),就执行continue语句,然后就进入下一次循环,不输出i的值,

所以输出的都是奇数。

4.2 break语句

break语句和continue语句差不多,但是有一个很大的区别时,

当程序执行到break语句,不仅不执行break语句后面的循环体语句,就连下次循环都不执行了,直接结束循环。

我们将上面的例子中的continue语句换为break测试一下效果:

结果发现啥也没输出,因为一开始i的初始值为0,满足模2余数为0的条件,执行到break语句直接跳出循环程序结束,

所以啥也没输出。

在使用break时需要注意

  • break语句只能跳出包含它的一层循环体
  • 如果在循环嵌套中使用break语句,不能直接跳到最外层循环,只能往外跳一层

但是如果我们想在内层循环中使用break语句直接跳到最外层循环那就需要加入标记。

我们用一个程序为例:

public class Main {
    public static void main(String[] args){
        flag:for(int i=0;i<10;i++){
            for(int j=0;j<10;j++){
                break flag;
            }
            System.out.println("你没有跳出外层循环!");
        }
    }
}

我们分析一下,如果是用普通的break语句,内层循环会被跳出,然后执行外层循环的内容,

也就是会输出“你没有跳出外层循环!”这句话,

但是如果我们加入了标识符,在最外层循环加入标识符:flag(也可以取其他名字),标识符的命名规则和变量相同,

并且在break语句后面加入flag,那么程序会输出什么呢?

答案是啥也不输出,我们验证一下:

关于这个标号有个很有意思面试题:

System.out.println("123");
http://www.baidu.com
System.out.println("321")

面试官可能会问你这个代码能运行吗?

第一眼看上去中间那行啥玩意儿啊,都不是一条语句,肯定会报错,

但是分析一下,http后面跟的冒号,就是一个标识符而已,然后加上注释“//”所以后面的语句被注释掉了,

所以程序会正常运行,输出123和321。

4.3 return语句

return语句的作用是跳出方法,而不是跳出循环,

下面我们用代码测试一下return语句的作用。

public class Main {
    public static void main(String[] args){
        for(int i=0;i<10;i++){
            System.out.println("我要开始跳出方法了");
            return;
        }
        System.out.println("你好像没跳出方法");
    }
}

其运行结果如下:

如果我们return语句换为break,则其结果如下:

这就是return和break的不同。

猜你喜欢

转载自blog.csdn.net/weixin_39478524/article/details/109476937