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.在设计一个需要大量迭代和条件判断的程序时,你会考虑哪些性能优化策略?
在设计程序时,我会考虑避免不必要的循环迭代,使用高效的数据结构,以及优化条件判断的顺序。
目录
相关文章
|
17天前
|
Java
解析Java线程池:参数详解与执行流程
解析Java线程池:参数详解与执行流程
15 1
|
6天前
|
消息中间件 存储 Java
使用Java构建实时数据处理流程
使用Java构建实时数据处理流程
|
2月前
|
Java
Java的控制流程语句:深入理解条件语句、循环语句与跳转语句
Java的控制流程语句:深入理解条件语句、循环语句与跳转语句
30 1
|
9天前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
4天前
|
Java 数据格式
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
11 0
|
4天前
|
存储 安全 Java
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
9 0
|
1月前
|
Java 索引
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
|
19天前
|
监控 Java 持续交付
构建Java微服务架构的CI/CD流程
构建Java微服务架构的CI/CD流程
|
2月前
|
Java 开发者
深入探索Java语言的流程控制
深入探索Java语言的流程控制
|
2月前
|
Java
java基础--程序流程控制
- **for循环案例**:求1-100的和及奇数和。 - **while循环**:未知循环次数时使用,基础案例:打印&quot;Hello World&quot;五次。 - **do-while循环**:至少执行一次,区别于先判断的for和while循环。 - **循环嵌套**:一个循环内含另一循环,例如打印矩形。 - **跳转语句**:`break`用于提前结束循环,`continue`跳过当前循环迭代。 ```