news 2026/7/22 2:12:51

JavaSE 基础语法 -逻辑控制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaSE 基础语法 -逻辑控制

在我们平常的生活中,我们每天都在进行各种判断和重复操作,例如:

  • 如果今天下雨,就带伞。
  • 如果考试成绩大于或者等于60分,就及格。
  • 每天坚持跑步五公里,直到完成目标。

程序也是一样,如果程序只能从第一行一直执行到最后一行,那么它几乎无法完成任何实际业务。

因此,Java 提供了流程控制语句,让程序具备了"思考"和"循环执行"的能力。

Java 中的流程控制主要包括三种:

  • 顺序结构
  • 选择结构(分支)
  • 循环结构

一、什么是流程控制

流程控制(Flow Control)是指控制程序执行顺序的一组语法结构

Java 程序默认采用顺序执行

例如:

System.out.println("开始");System.out.println("学习 Java");System.out.println("结束");

输出:

开始 学习Java结束

程序会按照代码的书写顺序依次执行。

但在实际开发中,我们经常需要根据条件执行不同的代码,或者重复执行某段代码,这时就需要使用流程控制。

二、选择结构

2.1 if语句

if 是 Java 中最常用的条件判断语句。在if语句中,又分为单分支、双分支、多分之。

单分支if:

语法:

if(条件表达式){// 条件成立时执行}

示例:

intage=20;if(age>=18){System.out.println("已成年");}

输出:

已成年

如果条件不成立,则不会执行 if 代码块。

双分支if…else:

语法:

if(条件){// 条件成立}else{// 条件不成立}

示例:

intscore=58;if(score>=60){System.out.println("考试通过");}else{System.out.println("考试不通过");}

输出:

考试不通过

多分支if…else if:

语法:

if(条件1){}elseif(条件2){}elseif(条件3){}else{}

示例:

intscore=85;if(score>=90){System.out.println("优秀");}elseif(score>=80){System.out.println("良好");}elseif(score>=60){System.out.println("及格");}else{System.out.println("不及格");}

输出:

良好

if 判断执行流程:
程序会按照顺序依次判断条件:

  • 第一个条件成立,后面的条件将不会继续判断。
  • 所有条件都不成立,则执行 else。

因此,多个条件之间要注意顺序。

例如:

if(score>=60){}elseif(score>=80){}

这种写法是存在问题的。因为80 已经满足 >= 60,所以后面的判断永远不会执行。

正确的写法:

if(score>=90){}elseif(score>=80){}elseif(score>=60){}

注意:如果在if语句后面加上分号后,这就会导致分号成为了if语句的语句体,此时执行{ }中的代码是没有任何条件的。例如:

intx=20;if(x==20);// 因为这个结尾加了分号// 此处多写了一个分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块,所以就会按照代码执行的顺序往下执行{System.out.println("x == 20");}

2.2 switch语句

当需要针对一个变量的多个固定值进行判断时,使用 switch 更加简洁。

语法:

switch(表达式){case1:代码;break;case2:代码;break;default:默认代码;}

示例:

intday=3;switch(day){case1:System.out.println("星期一");break;case2:System.out.println("星期二");break;case3:System.out.println("星期三");break;default:System.out.println("未知");}

输出:

星期三

break 的作用:

很多初学者容易忘记break。

例如:

intnum=1;switch(num){case1:System.out.println("A");case2:System.out.println("B");case3:System.out.println("C");}

输出:

ABC

原本只是想输出A,但是为什么会输出ABC,问题就出现在没有break,程序会发生穿透

正确的写法:

case1:System.out.println("A");break;

注意:在switch中,它并不支持任何类型的参数,Java 不同版本支持的数据类型也有所不同。

常见支持的有:

byteshortcharintStringJava7+enum(枚举)

不支持的有:

doublefloatbooleanlong

三、循环结构

循环就是重复执行代码。

Java 提供三种循环:

  • for
  • while
  • do…while

3.1 for循环

这是最常用的循环。

语法:

for(初始化;条件;更新){}

例如:

for(inti=1;i<=5;i++){System.out.println(i);}

输出:

12345

for执行流程:

执行顺序:

初始化 ↓ 判断条件 ↓ 执行循环体 ↓ 更新变量 ↓ 继续判断(一直到条件不满足才会调整循环)

例子:

求 1 ~ 100的和:

intsum=0;for(inti=1;i<=100;i++){sum+=i;}System.out.println(sum);// 输出5050

输出九九乘法表:

for(inti=1;i<=9;i++){for(intj=1;j<=i;j++){System.out.print(j+"*"+i+"="+(i*j)+"\t");}System.out.println();}输出:1*1=11*2=22*2=4...

3.2 while循环

这个循环比较适用于循环次数未知的情况。

语法:

while(条件){}

示例:

inti=1;while(i<=5){System.out.println(i);i++;}

输出:

12345

while 与 for 的区别:

for:

for(inti=1;i<=100;i++)

适合:已知循环次数。

例如:

  • 输出 100 次
  • 遍历数组
  • 遍历集合

while:

while(passwordWrong){}

适合:不知道循环多少次。

例如:

  • 登录验证
  • 文件读取
  • Socket 通信
  • 用户输入

3.3 do…while循环

这个循环的特点就是:先执行一次,再判断条件。

语法:

do{}while(条件);

示例:

inti=1;do{System.out.println(i);i++;}while(i<=5);

输出:

12345

即使条件不成立:

inti=10;do{System.out.println(i);}while(i<5);

也会输出:10,因为这个循环是:先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。

3.4 break 与 continue

break的作用在于:立即结束循环。

示例:

for(inti=1;i<=10;i++){if(i==5){break;}System.out.println(i);}

输出:

1234

执行到 break 就会让循环结束.

continue的作用在于:结束本次循环,继续下一次循环。

示例:

for(inti=1;i<=5;i++){if(i==3){continue;}System.out.println(i);}

输出:

1245

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句

3.5 循环嵌套

循环里面还可以继续写循环。

例如:

for(inti=1;i<=3;i++){for(intj=1;j<=2;j++){System.out.println(i+"-"+j);}}

输出:

1-11-22-12-23-13-2

常用于:

  • 打印图形
  • 遍历二维数组
  • 数据组合
  • 矩阵运算

3.6 死循环

所谓死循环,就是循环条件始终成立,程序无法正常结束。

例如:

while(true){System.out.println("Hello Java");}

或者:

for(;;){System.out.println("Hello Java");}

死循环并不一定是错误,在服务器程序、消息监听、网络通信等场景中会经常使用,但通常需要结合 break 或其他退出条件。

四、经典案例

案例一:判断闰年

intyear=2026;if((year%4==0&&year%100!=0)||year%400==0){System.out.println(year+" 是闰年");}else{System.out.println(year+" 是平年");}

案例二:输出 1~100 之间所有偶数

for(inti=1;i<=100;i++){if(i%2==0){System.out.println(i);}}

案例三:猜数字

Randomrandom=newRandom();Scannerscanner=newScanner(System.in);inttoGuess=random.nextInt(100);while(true){System.out.println("请输入数字:(1-100)");intnum=scanner.nextInt();if(num>toGuess){System.out.println("大了");}elseif(num<toGuess){System.out.println("小了");}else{System.out.println("猜对了");break;}}scanner.close();
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 18:19:30

2026降AIGC革命:AI率92%暴降至5%!实测10款降AIGC网站!免费额度狂薅攻略

2026 年各大高校和期刊平台的 AI 检测系统又升级了&#xff0c;知网 AIGC、维普 AI、万方智能检测三大平台的算法迭代速度越来越快&#xff0c;上个月能蒙混过关的改写方式&#xff0c;这个月直接就会被标红预警。单纯的同义词替换、语序调整早就不管用了&#xff0c;想要有效降…

作者头像 李华
网站建设 2026/7/22 2:12:30

突破性视频监控架构设计:如何实现5万+设备并发接入与智能级联管理

突破性视频监控架构设计&#xff1a;如何实现5万设备并发接入与智能级联管理 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR…

作者头像 李华
网站建设 2026/7/20 17:27:29

5分钟掌握OBS实时标注:让直播教学效率翻倍的终极指南

5分钟掌握OBS实时标注&#xff1a;让直播教学效率翻倍的终极指南 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 你是一个文章写手&a…

作者头像 李华
网站建设 2026/7/20 17:23:20

计算机毕业设计之基于SpringBoot的校园闲置二手物品交易商城的实现

由于移动应用技术的持续性的快速发展&#xff0c;现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此&#xff0c;许多的人工传统行业也开始与互联网结合&#xff0c;不再一味的依靠人工手动&#xff0c;努力打造半自动数字化甚至是全自动数字化模…

作者头像 李华
网站建设 2026/7/20 17:23:01

计算机毕业设计之基于asp.net网络文件存储系统的设计与实现

本文介绍了一款使用Net语言开发的网络文件存储系统&#xff0c;及其设计与开发过程。根据软件工程对软件系统开发定制的规则和标准&#xff0c;详细的介绍了系统的分析与设计过程&#xff0c;并且详细的概括了系统的开发与测试过程。本文的管理系统使用了Net进行系统的后端开发…

作者头像 李华
网站建设 2026/7/20 17:22:44

保护PDF文件安全:Signature PDF加密存储与权限管理最佳实践

保护PDF文件安全&#xff1a;Signature PDF加密存储与权限管理最佳实践 【免费下载链接】signaturepdf Free open-source web software for signing PDF (alone or with others) and also organize pages, edit metadata and compress pdf 项目地址: https://gitcode.com/gh_…

作者头像 李华