java控制语句(超详细!)
一、控制语句分类(3类)
- 选择语句
- 循环语句
- 转向语句
二、选择语句(分支语句)
- if语句
- switch语句
1.if语句
1.1语法格式:
第一种写法:int a = 100;int b = 200;if(布尔表达式){java语句;java语句;}这里的一个大括号{} 叫做一个分支。该语法的执行原理是:如果布尔表达式的结果是true,则执行大括号中的程序,否则大括号中代码不执行。
第二种写法:if(布尔表达式){ // 分支1java语句; }else{ // 分支2java语句;}执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。如果布尔表达式的结果是false,分支1不执行,执行分支2.以上的这个语句可以保证一定会有一个分支执行。else表示其它。
第三种写法:if(布尔表达式1){ // 分支1java语句;}else if(布尔表达式2){ // 分支2java语句;}else if(布尔表达式3){java语句;}else if(布尔表达式4){java语句;}....以上if语句的执行原理:先判断“布尔表达式1”,如果“布尔表达式1”为true,则执行分支1,然后if语句结束了。当“布尔表达式1”结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式2的结果是true,则执行分支2,然后整个if就结束了。从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,只要一个分支执行,整个if结束。
第四种写法:if(布尔表达式1){ // 分支1java语句;}else if(布尔表达式2){ // 分支2java语句;}else if(布尔表达式3){java语句;}else if(布尔表达式4){java语句;}else{java语句; // 以上条件没有一个成立的。这个else就执行了。}
注:
- 对于if语句来说,在任何情况下只能有
1个
分支执行,不可能 存在2个或者更多个分支执行。if语句中只要有1个分支执行了, 整个if语句就结束了。(对于1个完整的if语句来说的。) - 以上4种语法机制中,凡是带有else分支的,一定可以
保证
会有一个分支执行
。
以上4种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个分支都不执行。
第二种和第四种肯定会有 1个分支执行。 - 当分支当中“java语句;”只有
1
条,那么大括号{}可以省略
,但为了 可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意 将大括号{}省略,你能看懂就行。)
小知识点:
if(sex)System.out.println("男");System.out.println("HelloWorld!"); // 以上的这3行代码没有问题,合乎语法。/*else // 这一行编译报错,因为else缺少ifSystem.out.println("女");*/以上代码编译器会自动转换为:if(sex){System.out.println("男");}System.out.println("HelloWorld!"); else// 这一行编译报错,因为else缺少ifSystem.out.println("女");
int aa=10, bb = 10;if (a = b){//语法错误}if (1){//c/c++可以,Java不行}if (aa){//c/c++可以,Java不行,Java要boolean变量才行}
2.switch语句
2.1语法格式
switch(值){case 值1:java语句;java语句;...break;case 值2:java语句;java语句;...break;case 值3:java语句;java语句;...break;default:java语句;}
以上是一个完整的switch语句:
其中:break
;语句不是必须的。default
分支也不是必须的。
2.2执行原理
拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,
然后遇到"break;"语句,switch语句就结束了。
如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,
则执行该分支中的java语句,然后遇到break;语句,switch结束。
注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case 穿透
现象。
所有的case都没有匹配成功
,那么最后default
分支会执行。
2.3switch语句支持的值
支持int
类型以及String
类型。
switch语句本质上是只支持int和String,
但是byte,short,char
也可以
使用在switch语句当中,因为byte short char可以进行自动类型转换
。
switch语句中“值”与“值1”、“值2”比较的时候会使用“==”进行比较。
2.4 case合并、case穿透
switch (score) {case 10:case 9:ans = "优";break;case 8:ans = "良";//break;case 7:ans = "中";break;case 6:ans = "及格";break;case 5:case 4:case 3:case 2:case 1:case 0:ans = "不及格";break;default:ans = "输入的成绩有误";}
- case10、case9 和 case 5、case 4、 case 3、case 2、 case 1、case 0都是属于
case合并
- 比如进入case8由于case8没有break会
case穿透
到case7才结束
三、选择语句
- for循环
- while循环
- do…while…循环
1.for循环
1.1语法格式
for(初始化表达式; 条件表达式; 更新表达式){循环体; // 循环体由java语句构成java语句;java语句;java语句;java语句;....}
1.2执行原理
先执行初始化表达式,并且初始化表达式只执行1次
。
然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体。
循环体结束之后,执行更新表达式。
更新完之后,再判断条件表达式的结果,
如果还是true,继续执行循环体。
直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止。
更新表达式的作用是:控制循环的次数;换句话说,更新表达式会更新
某个变量的值,这样条件表达式的结果才有可能从true变成false,从而
终止for循环的执行,反之,很有可能会导致死循环。
2.while循环
2.1语法格式
while(布尔表达式){循环体;}
2.2执行原理
判断布尔表达式的结果,如果为true就执行循环体,
循环体结束之后,再次判断布尔表达式的结果,
如果还是true,继续执行循环体,
直到布尔表达式结果为false,while循环结束。
2.3for与while互相转换
for(初始化表达式; 布尔表达式; 更新表达式){循环体;}初始化表达式;while(布尔表达式){循环体;更新表达式;}
2.4 执行次数
while循环的循环次数是:0 ~ n次
。
3.do…while…循环
3.1语法格式
do {循环体;}while(布尔表达式);
注:while后有分号!!
因为while后是()结尾不是{}结尾!!
3.2执行原理
先执行循环体当中的代码,执行一次循环体之后,
判断布尔表达式的结果,如果为true,则继续执行
循环体,如果为false循环结束。
2.3 执行次数
对于do…while循环来说循环体至少执行1
次。循环体的执行次数是:1 ~ n
次
注意与while循环次数的差别!
对于while循环来说,循环体执行次数是:0~n次。
四、选择语句
- break
- continue
- return
1.break
- break;语句比较特殊,特殊在:break语句是一个单词成为一个完整的java语句。另外:continue也是这样,他俩都是一个单词成为一条语句。
- break;语句的执行并不会让整个方法结束,break;语句主要是用来终止离它最近的那个循环语句。
1.1适用范围及作用
第一个位置:switch语句当中,用来
终止switch语句的执行
。 用在switch语句当中,防止case穿透现象
,用来终止switch。第二个位置:break;语句用在循环语句当中,用来
终止循环的执行
。 用在for当中 用在while当中
用在do…while…当中。
1.2 使用break跳出指定的循环
第一步:你需要给循环起一个名字,例如:a: for(){b:for(){if(条件表达式) break a;code1;code2;code3;}}
第二步:终止:break a;
2.continue
2.1适用范围及作用
用在循环语句中!
终止当前"本次"循环,直接进入下一次
循环继续执行。
注:一但执行到continue,continue以下代码不执行,直接执行更新表达式,进入下一次循环。
2.2 使用continue跳过指定循环
a:for(;;更新表达式1){b:for(;;更新表达式2){if(条件表达式){continue a;}code1;code2;code3;}}
3.return
java控制语句(超详细!)相关推荐
- 微信公众号支付开发步骤Java(超详细)
做为一个刚刚做完微信公众号的小白,我不得不吐槽一下微信给的官方文档,里面那坑一个接一个,我这是跳进去再爬出来,一下给做了四天,本来技术就不够好,还被文档带的跑偏跑偏...我在这给大家整理一份超级详细的 ...
- 拼图游戏(JAVA)超详细!入股不亏
哎,最近被这个搞的头晕眼花的,烦死了!!! 不多解释了,代码注释很详细(毕竟写了好几天还熬了个大✌夜),不会欢迎私聊(虽然本人JAVA真的拉) MainJFrame.java//主窗体(package ...
- Java多线程超详细总结
目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么 ...
- 实战 本地服务器Confluence 7.13部署 一篇就够(从0开始安装配置 Debian11 + Mysql + Java)超详细
前言 在公司用了好几年的Confluence (WIKI),不说他有多方便吧,主要是习惯了操作方式.最近被封在家里,就想着趁时间比较充裕就在家里部署一套Confluence,1是为了把自己平时的学习P ...
- Java简介超详细整理,适合新手入门
目录 一.Java 简介 二.Oracle 公司 三.Java平台体系 四.Java语言主要特点 1.Java 语言是简单的 2.Java 语言是面向对象的 3.Java语言是分布式的 4.Java ...
- 超详细的Java面试题总结(四 )之JavaWeb基础知识总结
系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...
- Java中的多线程编程(超详细总结)
文章目录 Java中的多线程编程(超详细总结) 一.线程与多线程的概念 二.线程与进程之间的关系 三.一个线程的生命周期 四.多线程的目的和意义 五.线程的实现的方式 Java中的多线程编程(超详细总 ...
- Java并发知识总结,超详细!(上)
Java并发知识总结,超详细! 首先给大家分享一个github仓库,上面放了 200多本经典的计算机书籍 ,包括C语言.C++.Java.Python.前端.数据库.操作系统.计算机网络.数据结构和算 ...
- 超详细的Java面试题总结(三)之Java集合篇常见问题
系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 List,Set,Map三者的区别及总结 List:对付顺序的好帮手 Li ...
- project项目导入java路径_Eclipse项目怎么导入IDEA并运行(超详细)
导入项目 集成环境:intellij idea 2020.1.2 演示系统:dell windows 10 eclipse项目如何导入idea并成功运行,从头到尾步骤,保姆式图解如下: 首先准备好一个 ...
最新文章
- JavaScript 实现数组的foreach
- JSON 常量详情参考 (内含对中文不转义的参数)
- while循环里嵌套一个if_if-else嵌套太深?教你一个新手都能掌握的设计模式搞定!...
- leetcode——242. 有效的字母异位词
- 力扣904,水果成篮(JavaScript)
- java开发个人简历模板_java程序开发个人简历模板
- 数据结构与算法分析(七)递归
- pda mysql_Mysql 基础
- python2代码转换为python3
- 电脑清理(C盘清理,卸载软件以及注册表清理)
- 关于“硬解码”与“软解码”
- 用html+css做一个网页设计
- 「首席架构师精选」精选绘图软件
- 北交中外合作计算机类出国留学,北交大中外合作办学怎么样
- 数据流图-2(分层数据流图)
- 新一代打包神器Walle(瓦力)使用小结
- Windows电脑关闭触摸键盘的方法
- 跨时钟域同步-结绳法
- UI(1)---手机界面设计中12种常用布局
- 新电脑自带win11,开机怎样跳过连网
热门文章
- 软件安装过程中,系统提示需要安装.Net Framework 3.5解决
- 运行c语言程序显示已停止运行程序,c – “此应用程序已请求运行时以不寻常的方式终止它.”...
- 在win10下安装Linux双系统
- Spring整合mybatis
- 纯JavaScript实现表白代码
- VB使用API的简明教程
- Cognos常见错误解决办法
- R语言大作业(四):上海市、东京 1997-2018 年GDP值分析
- android studio 创建项目失败原因Failed to create
- 计算机网络笔记(含王道计算机考研课件)