zoukankan      html  css  js  c++  java
  • JAVA中的流程控制语句

    流程控制语句:

      在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

    流程控制语句分类

      • 顺序结构
      • 选择结构
      • 循环结构

    顺序结构:

      是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。总的来说:写在前面的先执行,写在后面的后执行.顺序结构就不写代码演示了。

    选择结构:

      也被称为分支结构。 选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。 Java语言提供了两种选择结构语句

    (1)if语句

      if语句第一种格式:
          if(关系表达式) {
            语句体
           }

     1 package flowController;
     2 
     3 public class Test {
     4     public static void main(String[] args) {
     5         int num=10;
     6         if(num>5){
     7             System.out.println("num>5");
     8         }11     }
    12 }

      if语句第二种格式:  

     if(关系表达式) {
        语句体1;
       }else {
        语句体2;
      }

     1 package flowController;
     2 
     3 public class Test {
     4     public static void main(String[] args) {
     5         int num=10;
     6         if(num>5){
     7             System.out.println("num>5");
     8         }else{
     9             System.out.println("num<5");
    10         }
    11     }
    12 }

      if语句后面跟一个逻辑判断,判断之后如果成立,就执行下面的语句体。

    如果执行了if下面的语句体后,则不会执行else,如果执行了else,则if后面的判断肯定不会成立。

    当然,我们也能进行多个if嵌套

     1 package flowController;
     2 
     3 public class Test {
     4     public static void main(String[] args) {
     5         int num=10;
     6         if(num>5){
     7             System.out.println("num>5");
     8             if(num>8){
     9                 System.out.println("num>8");
    10                 if(num>9){
    11                     System.out.println("num>9");
    12                 }
    13             }
    14         }else{
    15             System.out.println("num<5");
    16         }
    17     }
    18 }

      结果:


    (2)switch语句

     switch(表达式) {

      case 值1: 语句体1;

      break;

      case 值2: 语句体2;

      break;

      … default: 语句体n+1;

      break;

    }

    执行流程 :
    首先计算出表达式的值 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

     1 package flowController;
     2 
     3 public class Test2 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         int a=5;
     8         switch (a) {
     9         case 1:
    10             System.out.println("a=1");
    11             break;
    12         case 2:
    13             System.out.println("a=2");
    14             break;
    15         case 3:
    16             System.out.println("a=3");
    17             break;
    18         case 4:
    19             System.out.println("a=4");
    20             break;
    21         case 5:
    22             System.out.println("a=5");
    23             break;
    24         default:
    25             System.out.println("a不确定");
    26             break;
    27         }
    28     }
    29 }

    if 和 switch的区别

      switch建议判断固定值的时候用

         if建议判断区间或范围的时候用  
      用switch能做的,用if都能做,单反过来则不行

     循环结构:

       有很多操作,用循环操作可以很好的解决。

    (1)for循环:

      第一中:

      它的一般形式为: for(<初始化>; <条件表达式>; <增量>) 语句; 初始化总是一个赋值语句, 它用来给循环控制变量赋初值; 条件表达式是一个关系表达式, 它决定什么时候退出循环; 增量定义循环控制变量每循环一次后 按什么方式变化。

     1 package flowController;
     2 
     3 public class Test3 {
     4     public static void main(String[] args) {
     5         int [] nums={12,10,58,13,4,33,66,32};
     6         for (int i = 0; i < nums.length; i++) {
     7             System.out.println(nums[i]);
     8         }
     9     }
    10 }

     执行流程:

      A:执行初始化语句
      B:执行判断条件语句,看其结果是true还是false
      如果是false,循环结束。
      如果是true,继续执行。
      C:执行循环体语句
      D:执行控制条件语句
      E:回到B继续

       第二种:

       

     1 package flowController;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class Test3 {
     7     public static void main(String[] args) {
     8         List<Student> list = new ArrayList<Student>();
     9         Student s1 = new Student("aa");
    10         Student s2 = new Student("bb");
    11         Student s3 = new Student("cc");
    12         Student s4 = new Student("dd");
    13         list.add(s1);list.add(s2);list.add(s3);list.add(s4);
    14         for (Student student : list) {
    15             System.out.println(student.getName());
    16         }
    17     }
    18 }

      这种能直接获取到集合里面的对象,方便遍历;

     (2)while循环:

      while(判 断条件语句) {
             循环体语句;
         }

    while循环和for循环可以等价转换,但还是有些小区别的:
      for循环适合针对一个范围判断进行操作
      while循环适合判断次数不明确操作

    执行流程:

      先进行条件判断

      成立执行循环体,不成立不进行循环;

      执行后再判断成立不成立;

     1 package flowController;
     2 
     3 public class Test4 {
     4     public static void main(String[] args) {
     5         int n=20;
     6         while (n>1) {
     7             System.out.println(n);
     8             n--;
     9         }
    10     }
    11 }

      while循环一定要做好退出循环的条件,要不很容易造成死循环;

      

    (3)do.....while循环:

    do {
             循环体语句;
       }while((判 断条件语句);

    执行流程:

      先执行循环体,

      再进行条件判断

      成立再执行循环体,不成立退出

    所以:do…while循环至少会执行一次循环体。

     1 package flowController;
     2 
     3 public class Test4 {
     4     public static void main(String[] args) {
     5         int n=20;
     6         do {
     7             System.out.println(n);
     8             n--;
     9         } while (n>1);
    10     }
    11 }

    跳出控制语句

    • break 中断
    • continue 继续
    • return 返回 4

      

    break:直接跳出循环:

     1 package flowController;
     2 
     3 public class Test5 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         for (int i = 0; i < 20; i++) {
     8             System.out.println(i);
     9             if(i==4){
    10                 break;
    11             }
    12         }
    13     }
    14 
    15 }

    例如当 i==4之后 直接退出循环;

    continue:退出本次循环

      

     1 package flowController;
     2 
     3 public class Test5 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         for (int i = 0; i < 20; i++) {
     8             if(i%2==0){
     9                 continue;
    10             }
    11             System.out.println(i);
    12         }
    13     }
    14 
    15 }

      例如:当i%2==0.直接退出本次循环,进入下次循环;

    return :

      return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。

     1 package flowController;
     2 
     3 public class Test6 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         int n=getnum();
     8         System.out.println(n);
     9     }
    10     
    11     public static int getnum(){
    12         int i=0;
    13         return i;    
    14     }
    15 }

    好了  ,关于流程控制就说那么多;

  • 相关阅读:
    Asp.net弹出浏览器客户端确认对话框代码 Carlwave
    VS 2005 与SQL Server 2005整合优势在哪里?(from csdn.net) Carlwave
    如何让搜索引擎收录我的站点 Carlwave
    超强扩展性的DNNDotNetNuke模块功能分类列表(from 中国DNN) Carlwave
    DotNetNuke命名空间概述 Carlwave
    Most Popular Questions and Answers on ASP.NET Whidbey(from asp.net forums,write by ASP.NET Team) Carlwave
    火箭官方宣告麦蒂缺阵五周 季后赛前景蒙上阴影 Carlwave
    asp.net有效使用缓存(转) Carlwave
    《Business Rules Engine Overview》《业务规则引擎概述》write by Mark Kamoski Carlwave
    中国详细省市县自治区名称列表(含access数据库和sql2000备份数据库) Carlwave
  • 原文地址:https://www.cnblogs.com/GH0522/p/8158106.html
Copyright © 2011-2022 走看看