Java流程控制02:三大结构
2021/9/4 14:06:07
本文主要是介绍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:三大结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)