Java基本的程序结构设计 控制流程
2024-09-02 17:14:26
控制流程
java的控制流程和C和C++基本一致,只是不能使用goto语句,不过break语句可以带标签,实现从内层循环跳出的目的。标签可以放在for或者while前面。如下:
- package com.zjf;
- import java.io.Console;
- import java.util.Scanner;
- public class Test {
- public static void main(String[] args) {
- outer: for(int i=0;i<5;i++){
- for(int j=0;j<5;j++){
- System.out.println("i="+i+"j="+j);
- if(j==3){
- break outer;
- }
- }
- }
- }
- }
块作用域:
java是块作用域,这点和js不一样。
while循环
while循环有两种:
while()
{
//do some thing
}
和
do
{
//do some thing
}
while()
for循环
for(初始化;继续循环的条件,更新)
虽然如此,不建议在for循环里有复杂逻辑,最好是对变量的初始化和大小判断这种简单逻辑。
如果在循环重视使用浮点数进行检测,结果可能出现死循环。如下写法会死循环
- package com.zjf;
- public class Test {
- public static void main(String[] args) {
- for(double d = 0D; d != 1D;d+=0.1D)
- {
- System.out.println(d);
- }
- }
- }
我们换一种方式看看输出:
- package com.zjf;
- public class Test {
- public static void main(String[] args) {
- for(double d = 0D; d < 1D;d+=0.1D)
- {
- System.out.println(d);
- }
- }
- }
输出:
0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
多重选择:switch语句
switch语句只能作用在整形和枚举上。不能测试字符串,也不能测试浮点型。
switch语句中的多个case不能重复,所以只能满足一个,不可能满足多个。但是如果你不在每个case后面加上break,就会继续走到default。如下:
- package com.zjf;
- public class Test {
- public static void main(String[] args) {
- int i = 3;
- switch (i) {
- case 1:
- System.out.println(1);
- case 2:
- System.out.println(2);
- case 3:
- System.out.println(3);
- default:
- System.out.println("default");
- }
- }
- }
结果:
default
作者在书上说,有可能触发多个case分支,如果case语句没有加上break,那么就会接着执行下一个case分支,所以要尽量不要使用break。这段话说的没有错,是可以触发多个分支,但是语法上要求了case的键不能重复,否则就会编译报错。那么java这么设计的目的何在呢,我猜测,如果不加上break,那么每个case都会走到default,这样就可以在default中加上一些公共逻辑。
最新文章
- 关于ios 3D变换 CGAffineTransformIdentity
- Google类VR设备知识
- MYSQL57密码策略修改
- [系统] 安装Ubuntu 双系统 - 失败
- 优化DB2缓冲页的大小
- Office 365 for TechNet 版本国家地区没有中国选项
- android 安全退出应用程序的几种方法
- Windbg简单介绍
- QSS 样式表 (一)
- Django写的投票系统3(转)
- ODAC配置
- 解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HO问题
- Maven-环境搭建以及建立Maven项目
- 2.sass变量、嵌套、混合(mixin)、继承拓展、@import、comment
- ios开发-第二天
- (转载)JVM知识小集
- c++中一个多态的实例
- float浮动的世界
- 用docker-compose部署postgres+ postgis
- OpenGL——二次曲面函数(球面-圆锥面-圆柱面)