Java教程

Java流程控制02:三大结构

本文主要是介绍Java流程控制02:三大结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

顺序结构

所有程序都是按照顺序结构依次执行的

选择结构

if选择结构

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();
        if (i > 0){
            System.out.println("你输入的是正数");
        }
        else if(i < 0){
            System.out.println("你输入的是负数");
        }
        else{
            System.out.println("你输入的是0");
        }
        scanner.close();
    }
}

switch多选择结构

switch case语句匹配一个变量与一系列值中的某个值是否相等,每个值称为一个分支,相等则执行对应的分支

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char str = 'A';
        switch (str){
            case 'A':  //匹配到A则执行这个分支
                System.out.println("A级");
                break;  //case穿透,如果不加break,则会继续执行下面的分支
            case 'B':
                System.out.println("B级");
                break;
            default:  //如果没有匹配到任何值,则执行默认分支
                System.out.println("未知");
        }
        scanner.close();
    }
}

拓展:从JDK 7开始,switch支持字符串String类型,但case标签必须为字符串常量或字面量

字符的本质还是数字,Java通过编译生成class字节码文件运行,而IDEA通过反编译可以查看具体的编译过程,在IDEA中直接打开class文件就能看到反编译后的内容

编译前.java文件

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = "name";
        switch (str){
            case "name":
                System.out.println("姓名");
                break;
            case "age":
                System.out.println("年龄");
                break;
            default:
                System.out.println("未知");
        }
        scanner.close();
    }
}

编译后.class文件反编译

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

import java.util.Scanner;

public class Hello {
    public Hello() {
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = "name";
        byte var4 = -1;
        switch(str.hashCode()) {  //可以看到字符串在编译时转换成了对应的哈希值,其本质还是通过数字来判断
        case 96511:
            if (str.equals("age")) {
                var4 = 1;
            }
            break;
        case 3373707:
            if (str.equals("name")) {
                var4 = 0;
            }
        }

        switch(var4) {
        case 0:
            System.out.println("姓名");
            break;
        case 1:
            System.out.println("年龄");
            break;
        default:
            System.out.println("未知");
        }
        scanner.close();
    }
}

循环结构

while循环

while循环先判断条件,如果不满足,根本不会执行循环

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 1;  //初始值
        int sum = 0;
        while (i <= 100){  //条件判断,while循环要设置结束条件,避免死循环
            sum += i;  //循环体
            i++;  //迭代
        }
        System.out.println(sum);
        scanner.close();
    }
}

do...while循环

do...while循环至少会执行一次

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 1;
        do {
            System.out.println(i);  //1,虽然i < 0不成立,但是依旧会执行一次循环
        }while (i < 0);
        scanner.close();
    }
}

for循环

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        for (int i = 1; i <= 1000; i++) {  //for循环语法格式:for(初始值; 条件判断; 迭代) {循环体}
            if (i % 5 == 0){  //输出所有5的倍数的数字
                System.out.print(i + "\t");  //print()方法输出后不换行,"\t"表示后面再输出一个tab空格,注意'\t'是不行的
                if (i % 15 == 0){  //每隔3个数字换行,等价为每到5 * 3 = 15的倍数时换行
                    System.out.println();  //直接换行
                }
            }
        }  //IDEA快捷键,输入100.for回车,会自动生成for循环
        scanner.close();
    }
}

拓展:从JDK 5开始引入了一种主要用于数组或集合的增强for循环

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] num = {1, 2, 3, 4, 5};  //定义一个数组
        for (int i:num){  //从数组里依次取出值,类似Python语言的for...in结构
            System.out.println(i);
        }
        scanner.close();
    }
}

练习:输出九九乘法表

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int res = 0;
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                res = i * j;
                System.out.print(i + "*" + j + "=" + res + "\t");
            }
            System.out.println();
        }
        scanner.close();
    }
}
这篇关于Java流程控制02:三大结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!