控制流程

java的控制流程和C和C++基本一致,只是不能使用goto语句,不过break语句可以带标签,实现从内层循环跳出的目的。标签可以放在for或者while前面。如下:

  1. package com.zjf;
  2.  
  3. import java.io.Console;
  4. import java.util.Scanner;
  5.  
  6. public class Test {
  7.  
  8.    public static void main(String[] args) {
  9.       outer: for(int i=0;i<5;i++){
  10.             for(int j=0;j<5;j++){
  11.                 System.out.println("i="+i+"j="+j);
  12.                 if(j==3){
  13.                     break outer;
  14.                 }
  15.             }
  16.         }
  17.     }
  18. }

块作用域:

java是块作用域,这点和js不一样。

while循环

while循环有两种:

while()

{

//do some thing

}

do

{

//do some thing

}

while()

for循环

for(初始化;继续循环的条件,更新)

虽然如此,不建议在for循环里有复杂逻辑,最好是对变量的初始化和大小判断这种简单逻辑。

如果在循环重视使用浮点数进行检测,结果可能出现死循环。如下写法会死循环

  1. package com.zjf;
  2.  
  3. public class Test {
  4.  
  5.    public static void main(String[] args) {
  6.       for(double d = 0D; d != 1D;d+=0.1D)
  7.       {
  8.          System.out.println(d);
  9.       }
  10.     }
  11. }

我们换一种方式看看输出:

  1. package com.zjf;
  2.  
  3. public class Test {
  4.  
  5.    public static void main(String[] args) {
  6.       for(double d = 0D; d < 1D;d+=0.1D)
  7.       {
  8.          System.out.println(d);
  9.       }
  10.     }
  11. }

输出:

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。如下:

  1. package com.zjf;
  2.  
  3. public class Test {
  4.  
  5.    public static void main(String[] args) {
  6.       int i = 3;
  7.       switch (i) {
  8.       case 1:
  9.          System.out.println(1);
  10.       case 2:
  11.          System.out.println(2);
  12.       case 3:
  13.          System.out.println(3);
  14.       default:
  15.          System.out.println("default");
  16.       }
  17.     }
  18. }

结果:

default

作者在书上说,有可能触发多个case分支,如果case语句没有加上break,那么就会接着执行下一个case分支,所以要尽量不要使用break。这段话说的没有错,是可以触发多个分支,但是语法上要求了case的键不能重复,否则就会编译报错。那么java这么设计的目的何在呢,我猜测,如果不加上break,那么每个case都会走到default,这样就可以在default中加上一些公共逻辑。

Java基本的程序结构设计 控制流程的更多相关文章

  1. MVC思想-程序的控制流程-Struts2和SpringMVC黑马流程图

    1.初探 javaEE就是搞清前后台是怎么交互的,而控制那个交互的就被称为是:C:控制器 C负责协调调度程序如何执行的,M负责读数据的处理,比如说:验证输入的密码是否正确,是否 有这个权限.V就简单了 ...

  2. Java基本的程序结构设计 大数操作

    大数操作 BigInteger 不可变的任意精度的整数.所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型).BigInteger 提供所有 Java 的基本整数操 ...

  3. Java基本的程序结构设计 基本类型的输入输出

    读取输入: java.util.Scanner 一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器. 了解: Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹 ...

  4. Java基本的程序结构设计 字符类型

    char类型 char是2个字节,和short一样. char用单引号来表示. char可以通过数字来表示,也可以通过字母来表示,也可以通过unicode编码单元来表示,特殊字符还可以通过\+字符来表 ...

  5. Java基本的程序结构设计 数组

    声明数组: int[] a; int a[]; 两种方式.一般选择第一种,比较一目了然. 初始化,必须指定长度: int[] a = new int[10]; int[] a = {1,2,3}; 初 ...

  6. Java基本的程序结构设计 整形和浮点型

    整形: int 4字节 short 2字节 long 8字节 byte 1字节 int的大小差不多是20亿. 整形计算 如果两个int进行加减乘除数学运算的时候,最终的结果仍然是int,有可能出现了溢 ...

  7. Java基础之程序流程控制

    Java中的程序流程控制 Java中的程序流程分为三种结构:①顺序结构:②分支结构:③循环结构 一.顺序结构 Java中定义成员变量的时候,采用的是前向引用,也就是后面的变量可以引用之前定义好的变量. ...

  8. 【JAVA零基础入门系列】Day8 Java的控制流程

    什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...

  9. Java入门(五):控制流程

    在Java中,使用条件语句和循环结构确定控制流程,在本文中,主要包括块作用域.条件语句.循环结构.中断循环这四部分. 一.块作用域 块,也叫复合语句,是指由一对大括号括起来的若干条Java语句.块决定 ...

随机推荐

  1. Spring Cloud负载均衡:使用zuul作服务器端负载均衡

    1.目的: 本文简述Spring Cloud负载均衡之服务器负载均衡模式,使用组件为zuul. zuul作为Spring Cloud中的网关组件,负责路由转发.身份验证.请求过滤等等功能,那么我们可以 ...

  2. golang入门案例之SOCKET

    //服务端代码package main import ( "fmt" "net" "log" "os" "en ...

  3. bat中if语句的用法

    (作者:sanqima ) 例如,删除“C:\Documents and Settings\Administrator\桌面\T1\txt\批处理实验\unit1”里的a.txt文件,使用if的代码如 ...

  4. neutron网络服务2

    一.虚拟机获取 ip: 用 namspace 隔离 DHCP 服务 Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 通过 Linux Network Namespace ...

  5. 【HANA系列】SAP HANA 2.0 SPS00 SDA(Smart Data Access)连接Hadoop

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 2.0 SPS ...

  6. cocos2dx[3.2](10) 新回调函数std::bind

    在2.x中处理事件需要用到委托代理(delegate),相信学过2.x的触摸事件的同学,都知道创建和移除的流程十分繁琐. 而在3.x中由于加入了C++11的特性,而对事件的分发机制通过事件分发器Eve ...

  7. upd通讯Recvfrom设置阻塞不起作用

    把自己踩到的坑记录一下,在做UDP通讯的时候,发现自己的程序没有收数据居然也有百分之十二的cpu占用率,通过性能分析工具了解到时recvfrom函数一直在执行,虽然设置阻塞并且确认成功了, ;//阻塞 ...

  8. ENVI-IDL的MATH_DOIT和CF_DOIT函数(对FID和POS参数的讨论)

    MATH_DOIT相当于ENVI的band math,可以完成各种波段运算.参数比较简单,EXP为运算公式的字符串,其他参数均为常见参数. CF_DOIT可以将已有的文件保存为ENVI格式文件,相当于 ...

  9. Markdown基础语法总结

    目录 区块元素 标题 列表 区块引用 代码区块 分隔线 段落和换行 区段元素 链接 强调 代码 图片 转义 标题 <a name="title"></a> ...

  10. TCP listener

    调试时未关闭之前开启的TCP SERVER: 应该关闭: TcpListener TcpClient 1.开启TCP listener (1)Start()方法失败 异常位置:该异常的产生位置为 tc ...