JavaBasic_04
选择结构
选择结构有特定的语法规则
代码要执行具体的逻辑运算进行判断(代码执行有条件)
逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码(根据不同的条件执行不同的代码)
Java语言提供了两种选择结构语句
if语句
switch语句
if语句第一种格式
第一种格式(当条件满足的时候,才执行if语句的语句体)
- if(关系表达式) { 语句体 }
执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
注意事项:
关系表达式无论简单还是复杂,结果必须是boolean类型
if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号
if语句的第二种格式
if语句第二种格式:对同一条件满足与否,执行不同的代码
- if(关系表达式) { 语句体1; }else { 语句体2; }
执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
三目运算和if语句的第二种格式,高度相似,但并不是任何情况下都能相互替代(见代码)
- //只有一种情况我们的三目运算符无法替代if的第二种格式: if(a > b) { System.out.println(a); } else { System.out.println(b); } // 当if语句的语句体是操作的时候,三目运算无法替代if语句的第二种格式 // d = a > b ? ( System.out.println(a)):System.out.println(b);
if语句的第三种格式
第三种格式: 针对多种条件,执行不同的代码(满足不同的条件就执行不同的代码)
- if语句第三种格式: if(关系表达式1) { 语句体1; }else if (关系表达式2) { 语句体2; } … else { 语句体n+1; }
执行流程
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1
选择结构(switch语句)
switch语句格式
- switch语句格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; … default: 语句体n+1; break;
执行流程
首先 计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
switch表示这是switch语句
1.表达式的取值:byte, short, Int, char
DK5以后可以是:枚举
JDK7以后可以是:String
2.case后面跟的是要和表达式进行比较的值
3.语句体部分可以是一条或多条语句
4.break表示中断,结束的意思,可以结束switch语句
5.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
区别:
if(> < == !=)
switch(==)
case穿越
当表达式的值和某个case后所跟的值相当,在执行该case语句的语句体之后,继续依次执行在该case之后的语句体(不会再做比较)
注意事项
1.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
2.default可以省略吗?可以省略。一般不建议。除非判断的值是固定的。(单选题)
3.break可以省略吗?可以省略,一般不建议。否则结果可能不是你想要的
4.default的位置一定要在最后吗?可以出现在switch语句任意位置。
5.switch语句的结束条件
遇到break
执行到程序的末尾
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
循环结构
for循环结构的组成
初始化语句:一条或者多条语句,这些语句完成一些初始化操作。
判断条件语句:这是一个boolean ?表达式,这个表达式能决定是否执行循环体。关系表达式
循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
for循环语句格式
- for(初始化语句(没有开始重复之前的状态);判断条件语句(指明终止条件);控制条件语句(记录重复的状态)) { 循环体语句; 注意事项: 1.判断条件语句的结果是一个boolean类型 2.循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。 }
- for(int i = 1; i <= 10; i++){}
这样定义for循环的控制变量,那么i的作用域,就是循环的{}之内,一旦出了循环,i变量的空间就会被jvm所回收(销毁)
while循环语句格式
基本格式
- while(判断条件语句) { 循环体语句; }
实际使用的时候使用的都是扩展的while语句格式
扩展格式
- 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } for(初始化语句;判断条件语句;控制条件语句) 循环体语句;
场景区别:
for循环适合针对一个范围判断进行操作(循环次数比较明确)
while循环适合判断次数不明确操作
do…while循环语句格式:
基本格式
- do { 循环体语句; }while((判断条件语句);
扩展格式
- 初始化语句; do { 循环体语句; 控制条件语句; } while(判断条件语句); // do while 和while唯一的区别就在于,do while无论如何都会执行一次循环体语句,但是对于while
对于三种循环的选择:写程序优先考虑for循环,再考虑while循环,最后考虑do···while循环。
两种常见的死循环
- while(true){} for(;;){}
跳转控制语句
Java提供了break,continue和return来实现控制语句的跳转和中断
break 中断
continue 继续
return 返回
跳转控制语句:终止循环(不依赖于循环的终止条件)
跳转控制语句(break)
执行break语句,终止循环(单层循环)
1.在选择结构的switch语句中
2.在循环语句
3.离开使用场景的存在是没有意义的(不和if一起使用)
跳出单层循环(如果有多层循环,只跳出内层)
break和标签结合使用:
带标签的跳出
格式:标签名:循环语句
标签名要符合Java的命名规则
跳转控制语句(continue)
continue的使用场景:
在循环语句中
离开使用场景的存在是没有意义的
continue的作用:
单层循环对比break,然后总结两个的区别
break 退出当前循环
continue 退出本次循环
2.带标签的使用
continue + 标签(双重循环) <=> 终止单层循环的break
跳转控制语句(return)
关键字不是为了跳转出循环体,更常用的功能是结束一个方法(函数),也就是退出一个方法
return 如果放在循环中,直接终止最外层循环(连整个方法都终止了)
break和标签结合
- //break 和标签结合使用,可以达到终止n层循环 f: for(int j = 1; j <= 3; j++) { for(int i = 1; i <= 10; i++) { //离开使用场景的存在是没有意义的,一定要结合特定的使用场景,即满足特定条件,和if语句一起只用 if(i == 3) break f; //只结束了内层循环 System.out.println(i); } }
continue和标签结合
- outer: for (int j = 1; j <= 3; j++) { for (int i = 1; i <= 3; i++) { //离开使用场景的存在是没有意义的,一定要结合特定的使用场景,即满足特定条件,和if语句一起只用 if (i == 2) continue outer; //只循环的一次执行,也就是说在本次执行过程如中 // continue之后的语句不会再被执行,直接开始下一次循环 System.out.print(i + " "); } System.out.println(); }
return作用
JavaBasic_04的更多相关文章
随机推荐
- bool类型为什么可以当做int
实际上bool型变量占用了一个字节的内存,当值为false的时候,实际存储的是0x00,为true时实际存储的是0x01,因此可以作为int整型使用 bool型只分0与非0,0为false,其余的包括 ...
- vue 中router.go、router.push和router.replace的区别
router.go(n) 这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n) router.push(location) 想要 ...
- laravel composer 安装指定版本以及基本的配置
1 安装指定的 laravel版本 以下的案例是安装5.2版本 composer create-project laravel/laravel=5.2.* --prefer-dist 2 配置 优化相 ...
- nodejs项目文件搭建环境
nodeJS,作为一门较为“新鲜的”的原因,近年来普遍受到一些前端想转为全栈的ITer青睐,在想用nodeJS配合数据库开发出一个小玩意的路上,萌新们第一步便要遇到就是环境的支持.node作为Java ...
- JAVA的环境变量配置(方式二)
1.想要成功配置Java的环境变量,那肯定就要安装JDK(JDK安装包在方式一中),才能开始配置的. 2.安装JDK 向导进行相关参数设置.如图: 3.正在安装程序的相关功能,如图: 4.选择安装的路 ...
- day28-python阶段性复习-基础二
六.流程控制 if条件语句 #!/usr/bin/python if 1: print 'hello python' 1表示成立,0表示不成立 条件语句排断 if : 条件 elif: 添 ...
- shell脚本中出现图形化界面
http://www.ttlsa.com/shell/how-to-create-dialog-boxes-in-interactive-shell-script/
- TNetHTTPClient 使用
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- 【转】Java迭代:Iterator和Iterable接口
Java迭代 : Iterator和Iterable接口 从英文意思去理解 Iterable :故名思议,实现了这个接口的集合对象支持迭代,是可迭代的.able结尾的表示 能...样,可以做.... ...
- JAVA设计模式(二)工厂模式
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...