Java基础之流程控制

简介: Java基础的流程控制包括顺序、选择和循环控制。顺序控制是默认的逐行执行;选择控制(if/else, if...else if...else, switch)根据条件执行不同代码块;循环控制(for, while, do-while)用于重复执行代码。for循环适合已知循环次数,while适合未知次数但有明确终止条件,do-while至少执行一次。知识点包括if与switch的区别、for-each循环的工作原理、嵌套循环、避免死锁的方法以及尾递归在优化递归调用中的作用。

Java基础之流程控制
我们执行java命令后,jvm虚拟机启动main方法,执行main方法中的代码,此时main方法是从上到下逐行执行的。
但是业务逻辑一般是动态的,需要在代码执行的时候,根据不同的入参及执行结果来决定哪些代码执行,什么代码跳过,这里我们就用到流程控制语句!
流程控制是编程的核心部分,它允许我们根据不同的条件执行不同的代码。
在Java中,流程控制主要分为三大类:顺序控制、选择控制和循环控制。
一、顺序控制
顺序是核心语句,默认就是逐行执行,顺序控制是最常见的控制流程。
public class Control {
public static void main(String[] args) {
System.out.println("这是第一条语句。");
System.out.println("这是第二条语句。");
System.out.println("这是第三条语句。");
}
}
二、选择控制
选择控制就是根据条件的真假来选择执行不同的代码,前面我们写过的if语句:
int max;
if(a>b){
max = a;
}else{
max = b;
}
这句就是如果条件 a>b 为真,那么就走 max=a 这一句代码,否则就走max=b 这一行。
根据if后面条件的执行结果来执行不同的分支语句,这就是选择控制。
if语句有三种:
1.只有if(){}
int max = 0;
if(ab 为真,max就被赋值为a,否则就跳过了赋值,还是保持原有的 0。
2.第二种就是上面的示例,if(){}else{}
不再赘述。
3.第三种是多个条件时的写法:
if(xxx){
}else if(xxx){
}else{
}
这种就适用于多个条件的判断,比如判断一个人,小于3岁是宝宝,3~6岁是儿童,6~18岁是少年,否则就是成年人。
// 根据xh的年龄,判断处于什么阶段。
int age = 2;
if(age < 3){
System.out.println("age < 3岁,xh还是个宝宝");
}else if(age >= 3 && age < 6){
System.out.println("age < 6岁,xh还是个儿童");
}else if(age >= 6 && age < 18){
System.out.println("age < 18岁,xh还是个少年");
}else{
System.out.println("age > 18岁,xh成年了");
}
除了这三种之外,Java还提供了一种和第三种写法效果差不多的选择控制写法,那就是 switch 语句。
比如说我直说三个年龄,3、6、18,如果输入3就是宝宝,输入6就是儿童,输入18就是少年,否则就是成年人。
int number = 3;
switch (number) {
case 3:
System.out.println("数字是3,是个宝宝");
break;
case 6:
System.out.println("数字是6,是个儿童");
break;
case 18:
System.out.println("数字是18,是个少年。");
break;
default:
System.out.println("数字不是3、6、18,默认他是成年人啦!");
break;
}
三、循环控制
Java中提供了循环语句,可以让我们重复的执行代码块来做一些事情。
Java 提供了 for、while 和 do-while 三种循环。
1.for循环是Java 中最常用的循环结构之一。它允许您在循环开始前初始化变量,定义循环的终止条件,以及每次迭代后更新循环变量。
语法:
for (初始化语句; 循环条件; 步进语句) {
// 循环体,这里可以写我们要重复的事情
}
比如现在我们要从0数到10,那么我们就可以使用循环来实现。
for(int i=0; i<=10; i++){
System.out.println("现在数:"+i);
}
如果不给他设定条件,那么就是一个无线循环,直接就内存溢出了
for (;;) {
// 无限循环体
}
当然可以在循环中使用break关键字来退出循环。
for(int i=0; i<=10; i++){
if(i==5){
System.out.println("现在数到5了,结束循环");
break;
}
}
如果是跳出当前的循环,比如数到5的时候不数5,直接跳过5,用continue关键字:
for(int i=0; i<=10; i++){
System.out.println("现在数到"+i+"了");
// 这个不会数5,数完4直接数6
if(i==5){
System.out.println("现在数到5了,结束循环");
continue;
}
}
Java5对for循环做了扩展,也称为for-each循环。
这种循环用于遍历数组或集合中的每个元素,无需使用索引(索引就是下标,用来显示在列表中的第几个值,以后数组集合我们会学)。
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
这种在业务需求开发中还是比较常用的。
2.while 循环,
while 循环在每次迭代之前检查循环条件。如果条件为真,则执行循环体;如果条件为假,则退出循环。
语法:
while (循环条件) {
// 循环体
}
while会先判断循环的条件,如果条件为真true,那么就执行,否则就一次也不执行。
用这个我们就需要在循环体内设置能满足跳出的条件,要不然循环条件一直是true,也会无限循环,内存溢出。
int i = 0;
while (i < 5) {
System.out.println("这是第 " + (i + 1) + " 次循环。");
i++;
}
这里的i++,就会让i自增到5的时候,停止循环。
3.do-while 循环
do-while 循环与 while 循环类似,但它在每次迭代之后检查循环条件。这意味着循环体至少会执行一次。
do {
// 循环体
} while (循环条件);
也就是说它是先执行一次循环体,然后再判断循环条件是不是真true。
int i = 0;
do {
System.out.println("这是第 " + (i + 1) + " 次循环。");
i++;
} while (i < 5);

  总而言之,三种循环都有各自的使用条件:
  for 循环适用于已知循环次数的情况。
  while 循环适用于循环次数不确定,但有一个明确的终止条件的情况。
  do-while 循环适用于至少需要执行一次循环体的情况。
想想啊,一般会问啥问题:
1.if和switch的区别?
if 语句用于根据一个或多个条件执行不同的代码块,而 switch 语句用于根据变量的值选择执行不同的代码块。switch 适用于多个明确值的情况,而 if 适用于范围或复杂条件。
2.解释 for-each 循环(扩展 for 循环)的工作原理。
for-each 循环简化了数组和集合的遍历,它依次取出集合中的每个元素进行处理,无需使用索引。
3.还有一些编程题,比如打个99乘法表?
public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) { // 外层循环控制行
            for (int j = 1; j <= i; j++) { // 内层循环控制列
                System.out.print(j + "x" + i + "=" + (i * j) + "\t"); // 打印乘法表的一项
            }
            System.out.println(); // 每打印完一行后换行
        }
    }
}
4.嵌套循环的概念?
嵌套循环是指在另一个循环内部有一个或多个循环。例如,上面说的用于打印乘法表的两个嵌套 for 循环。
5.如何避免死锁?
避免死锁的方法包括:按固定顺序获取锁、避免持有多个锁、使用超时尝试获取锁、设计锁层次结构等。
6.解释尾递归的概念,以及它如何优化递归调用?
尾递归是指递归调用是函数的最后一个操作,这样可以优化递归调用,避免过多的栈使用。
7.在设计一个需要大量迭代和条件判断的程序时,你会考虑哪些性能优化策略?
在设计程序时,我会考虑避免不必要的循环迭代,使用高效的数据结构,以及优化条件判断的顺序。
目录
相关文章
|
4月前
|
Java
解析Java线程池:参数详解与执行流程
解析Java线程池:参数详解与执行流程
46 1
|
3月前
|
消息中间件 存储 Java
使用Java构建实时数据处理流程
使用Java构建实时数据处理流程
|
2月前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文对比分析了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署及云原生部署。传统部署直接在物理机上运行程序,存在资源复用难等问题。虚拟化部署通过虚拟机技术实现了资源的有效隔离与利用,但可能会造成性能损失。容器化部署则进一步提升了应用的可移植性和资源利用率,减轻了运维负担。云原生部署结合容器化、微服务等技术,实现了应用的快速迭代、高效运维和灵活扩展,适用于现代互联网应用的开发与部署。每种方式均针对其特点进行了详细的流程描述与优缺点分析。
|
2月前
|
安全 Java 编译器
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
49 18
|
2月前
|
Java
在Java编程的广阔天地中,条件语句是控制程序流程、实现逻辑判断的重要工具。
在Java编程中,if-else与switch作为核心条件语句,各具特色。if-else以其高度灵活性,适用于复杂逻辑判断,支持多种条件组合;而switch在多分支选择上表现优异,尤其适合处理枚举类型或固定选项集,通过内部跳转表提高执行效率。两者各有千秋:if-else擅长复杂逻辑,switch则在多分支选择中更胜一筹。理解它们的特点并在合适场景下使用,能够编写出更高效、易读的Java代码。
32 1
|
2月前
|
Java
Java 流程控制15道练习题(选择&循环)
Java 流程控制15道练习题(选择&循环)
40 10
|
2月前
|
Java 数据安全/隐私保护
03 Java流程控制-分支(if+switch+变量类型)
03 Java流程控制-分支(if+switch+变量类型)
24 5
|
2月前
|
Java 机器人 开发者
04 Java流程控制-循环(while+for+关键字+嵌套)
04 Java流程控制-循环(while+for+关键字+嵌套)
53 4
|
3月前
|
Java
Java程序的流程控制
程序执行顺序经典三类: 1. **顺序结构**: 代码从上至下依次执行。 2. **分支结构**: - `if/else`: 根据条件选择执行路径。 - `switch`: 通过匹配值选择分支,需注意`break`避免穿透现象。 3. **循环结构**: 控制代码重复执行,如`for`, `while`, `do...while`等。 (注:markdown格式不支持内嵌卡片或图片,故摘要中未包含原文中的图片信息。)
148 7
|
2月前
|
存储 安全 Java
【Java 第四篇章】流程控制、容器
本文档详细介绍了Java中的流程控制、集合类型、数组声明及容器的声明与遍历等内容。在流程控制部分,包括了if、if...else、if...else if...else、switch等语句的使用方法,并提供了具体示例。接着,文档对比分析了Java中单列集合(如HashSet、LinkedHashSet、TreeSet等)与双列集合(如HashMap、LinkedHashMap、Hashtable等)的特点及底层实现原理。此外,还介绍了如何声明与初始化数组,并提供了多种循环结构的使用示例。最后,通过具体的代码示例展示了不同集合类型的声明、基本操作(如添加、删除、更新、查找)以及遍历方法。
14 0
下一篇
无影云桌面