所有程序都是按照顺序结构依次执行的
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 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文件就能看到反编译后的内容
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(); } }
// // 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循环先判断条件,如果不满足,根本不会执行循环
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循环至少会执行一次
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(); } }
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(); } }