Java语法基础(三)
来源:互联网 发布:java变量的三要素 编辑:程序博客网 时间:2024/05/21 06:16
流程控制语句
- 顺序结构
- 选择结构
- 循环结构
顺序结构
略
选择结构
选择结构(if语句)
格式1:
if(关系表达式) { 语句体 }
格式2:
if(关系表达式) { 语句体1; }else { 语句体2; }
格式3:
if(关系表达式1) { 语句体1; }else if (关系表达式2) { 语句体2; } … else { 语句体n+1; }
选择结构(switch语句)
语句格式
switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; … default: 语句体n+1; break; }
格式的解释
switch : 表示这是switch选择结构表达式: 这个地方的取值是有限定的 byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串case: 后面跟的是要和表达式进行比较的值语句体: 要执行的代码break: 表示中断,结束的意思,可以控制switch语句的结束。default: 当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实它就相当于if语句的else。
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
default可以省略吗?
可以省略。一般不建议。除非判断的值是固定的。(单选题)
break可以省略吗?
可以省略,一般不建议。否则结果可能不是你想要的
default的位置一定要在最后吗?
可以出现在switch语句任意位置。
switch语句的结束条件
遇到break执行到程序的末尾
/* 看程序写结果*/class SwitchTest { public static void main(String[] args) { int x = 2; int y = 3; switch(x){ default: y++; break; case 3: y++; case 4: y++; } System.out.println("y="+y); // 4 System.out.println("---------------"); int a = 2; int b = 3; switch(a){ default: b++; case 3: b++; case 4: b++; } System.out.println("b="+b); // 6 }}
if和case的区别
在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
if语句使用场景
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断switch语句使用场景
针对几个常量值的判断
循环结构
循环结构(for)
语句格式
for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; }
执行流程
A: 执行初始化语句B: 执行判断条件语句,看其结果是true还是false 如果是false,循环结束。 如果是true,继续执行。C: 执行循环体语句D: 执行控制条件语句E: 回到B继续
注意事项
A: 判断条件语句的结果是一个boolean类型B: 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。C: 一般来说:有左大括号就没有分号,有分号就没有左大括号
/* 需求:在控制台输出所有的”水仙花数” 分析: 我们都不知道什么叫"水仙花数",你让我怎么做呢? 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 举例:153就是一个水仙花数。 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153 A:三位数其实是告诉了我们范围。 B:通过for循环我们就可以实现获取每一个三位数 但是麻烦是如何获取这个三位数的个,十,百位上的数据 我们如何获取一个数据的个,十,百呢? 假设有个一个数据:153 ge: 153%10 = 3 shi: 153/10%10 = 5 bai:153/10/10%10 = 1 qian:x/10/10/10%10 wan: x/10/10/10/10%10 ... C:让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较 如果相同,就把该数据在控制台输出。*/class ForDemo6 { public static void main(String[] args) { //三位数其实是告诉了我们范围。 for(int x=100; x<1000; x++) { int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; //让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较 if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) { //如果相同,就把该数据在控制台输出。 System.out.println(x); } } }}
循环结构(while)
语句格式
基本格式 while(判断条件语句) { 循环体语句; }扩展格式 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句;
循环结构(do…while)
语句格式
基本格式 do { 循环体语句; }while((判断条件语句);扩展格式 初始化语句; do { 循环体语句; 控制条件语句; } while((判断条件语句);
循环语句的区别
- do…while循环至少执行一次循环体。而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
跳转控制语句
- break 中断
- continue 继续
- return 返回
跳转控制语句(break)
break的使用场景
- 在选择结构switch语句中
- 在循环语句中
- 离开使用场景的存在是没有意义的
break的作用
- 跳出单层循环
- 跳出多层循环
带标签的跳出
格式: 标签名: 循环语句标签名要符合Java的命名规则
class BreakDemo { public static void main(String[] args) { //在 switch 或 loop 外部中断 //break; //跳出单层循环 for(int x=0; x<10; x++) { if(x == 3) { break; } System.out.println("HelloWorld"); } System.out.println("over"); System.out.println("-------------"); wc:for(int x=0; x<3; x++) { nc:for(int y=0; y<4; y++) { if(y == 2) { //break nc; break wc; } System.out.print("*"); } System.out.println(); } }}
跳转控制语句(continue)
continue的使用场景
- 在循环语句中
- 离开使用场景的存在是没有意义的
continue的作用
- 单层循环对比break,然后总结两个的区别
- break 退出当前循环
- continue 退出本次循环
- 单层循环对比break,然后总结两个的区别
/* continue:继续 使用场景: 循环中。离开此场景无意义。 测试,找到和break的区别: break:跳出单层循环 continue:跳出一次循环,进入下一次的执行 练习题: for(int x=1; x<=10; x++) { if(x%3==0) { //在此处填写代码 } System.out.println(“Java基础班”); } 我想在控制台输出2次:“Java基础班“ break; 我想在控制台输出7次:“Java基础班“ continue; 我想在控制台输出13次:“Java基础班“ System.out.println(“Java基础班”);*/class ContinueDemo { public static void main(String[] args) { for(int x=0; x<10; x++) { if(x == 3) { //break; continue; } System.out.println(x); } }}
跳转控制语句(return)
- return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会在详细的讲解。
0 0
- Java基础语法(三)
- Java语法基础(三)
- java基础语法(三)
- java基础语法学习笔记(三)
- java的一些语法基础(三)
- 三、JAVA基础语法(1)
- Java基础语法(三)---数组
- 黑马程序员——Java基础---基础语法(三)
- Java基础语法(三)(流程控制和数组)
- 黑马程序员一一Java基础语法(三)
- 黑马程序员——java基础语法(三)---数组
- Java基础语法(三)—运算符
- MySQL基础语法(三)
- Python基础语法(三)
- SWIFT基础语法(三)
- Python 基础语法(三)
- JS基础语法(三)
- MQL5语法基础(三)
- VirtualBox 安装CentOs7后无法联网问题
- 大数据量下高并发同步的讲解
- CentOS6/5下vsftpd(虚拟用户)的配置
- JDBC的批处理操作三种方式
- php sleep(10) Session锁问题
- Java语法基础(三)
- jsp页面中动态添加上传输入项注意的问题:“添加上传文件”按钮的name属性值不能和onclick属性的值相同!!!
- 分享一些轮播特效
- const限定符(一)
- crontab
- Dubbo安装部署
- Cocos2d-x 3.9 Lua 自定义事件
- gdbserver调试工具移植到ARM Linux教程
- CDI进阶第三步 CDI验证器