Java的流程控制

用户交换Scanneer

  • 导入包java.util.Scanner;

  • Scanner s=new Scanner(System.in);

    import java.util.Scanner
    Scanner s=new Scanner(System.in)
    
  • 用完要关闭s.close();

  • next()

    • 接收数据:int i=s.nextInt();

顺序结构

  • 程序由上到下顺序执行

选择结构

  • if单选择结构

    if(判断语句){
        
    }
    //或者
    if(判断语句){
        
    }else(判断语句){
        
    }
    //或者
    if(判断语句){
        
    }else if(判断语句){
        
    }else if(判断语句){
        
    }...
    
  • switch多选择结构

    switch(expression){
        case value:
            //语句
            break;
        case value:value
            //语句
            break;
            //你可以有任意数量的case语句
        default:
    }
    

循环结构

  • while循环

    while(布尔表达式){
        //循环内容
    }
    
  • do...while循环

    do{
        //代码语句
    }while(布尔表达式);
    
  • While和do-While的区别:

    1. while先判断后执行。dowhile是先执行后判断!
    2. Do...while总是保证循环体会被至少执行一次!只是他们的主要差别。
  • For循环

    for(初始化;布尔表达式;更新){
        //代码语句
    }
    
  • 增强For循环

    1. 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此是数组的值相等。
    2. 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
    for(声明语句:表达式)
    {
        //代码句子
    }
    
  • break

    • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
  • continue

    • continue语句用在循环语句体中,用于终止某次循环过程,及跳过循环体中尚未执行的语句,接着进行下次是否执行循环的判定。
  • 关于goto

    • goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子---带标签的break和continue。
    • “标签”是指后面跟一个冒号的标识符,例如:lable:
    • 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。

方法的重载

  • ◆重载就是在一个类中,有相同的函数名称,但形参不同的函数。

    • 方法的重载的规则:

      • 方法名称必须相同。

      • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。

      • 方法的返回类型可以相同也可以不相同。

      • 仅仅返回类型不同不足以成为方法的重载。

        ◆实现理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

递归

  • 递归就是:A方法调用A方法!就是自己调用自己
  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
  • 递归结构包括两个部分:
    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
    • 递归体:什么时候需要调用自身方法。