Java控制语句

Java控制语句

???? 建立个人知识体系
???? 查漏补缺
???? Java复习


控制语句结构有三:顺序,选择,循环

顺序结构

最基本的结构,程序按照语句顺序依次执行

a -> b -> c

选择结构

选择结构有多种:

if单选结构

Java控制语句

if会对条件表达式结果进行判断,为真则执行if{}中的语句,为假则跳过不执行if{}中的语句

if-else双选结构

Java控制语句

if会对条件表达式结果进行判断,为真则执行if{}中的语句,为假则执行else{}中的语句

if-else if-else多选结构

Java控制语句

if-else if-else会对条件表达式结果进行多次判断,首先if会对条件表达式结果进行判断,为真则执行if{}中的语句,不满足则进入下一个else if中进行判断,为真则执行else if{}中的语句,否则继续进入下一个else if,直到满足,若条件表达式结果不满足任意的if或else if,有else时则执行else{}中的语句,没有else则结束判断继续向下执行程序

switch多选结构

Java控制语句

switch语句会根据表达式的值从相匹配的执 行,一直执行到break标签处开始ak语句处或 者是switch语句的末尾。与任一case值不匹配, 则进入default语句(如果有的话)

注意⚠️:jdk1.5前case的判断标签只能是int byte char short(没有long!!!)或枚举,jdk1.7开始支持String类型(必须是常量或字面量)

注意⚠️: switch语句判断由case开始,一直运行到break结束,所以不要忘记在执行语句的最后加上break,当然某些特殊情况可以不加,break不是必须的

注意⚠️:default就是如果没有符合的case就执行它,default并不是必须的,它的位置不固定,但是强烈建议写在末尾,注意下述情况的发生

public static void main(String[] args) {
        int i=1;
        switch(i) {
            case 1:
                System.out.println(1);
            default:
                System.out.println("default");
            case 2:
                System.out.println(2);
                break;
            case 3:
                System.out.println(3);
                break;
        }
    }
    /*
    输出结果:
    1
    default
    2
    原因是:一旦case匹配,就会顺序执行后面的程序代码(default也执行,所以强烈建议将default写在末尾),而不管后面的case是否匹配,直到遇见break
     */

循环结构

循环结构也有多种:

while

Java控制语句

在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于 后来每一次额外的循环,都会在开始前重新计算一次

语句中应有使循环趋向于结束的语句,否则会出现"死"循环

do while

Java控制语句

do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环
do-while循环的循环体至少执行一次

for

Java控制语句

for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环

如果三个部分都为空语句(分号不能省),相当于一个无限循环

嵌套循环

简单讲就是循环里面套一个循环,上述三种循环可以互相嵌套,描述起来可能简单,但是需要多加练习才能掌握透彻

break和continue

break用于跳出该循环
continue用于跳过本次循环
break和continue执行时,其后的语句均不执行
break和continue都可以带上标签

“标签”是指后面跟一个冒号的标识符,例如:“label:”。对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断 到存在标签的地方.

语句块

语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句。块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块.

方法

方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数。方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。

对象名.方法名(实参列表)
方法的详细说明

  1. 形式参数:在方法声明时用于接收外界传入的数据。
  2. 实参:调用方法时实际传给方法的数据。
  3. 返回值:方法在执行完毕后返还给调用它的环境的数据。
  4. 返回值类型:事先约定的返回值的数据类型,如无返回值,必须显示指定为为void。

方法重载

对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候就构成方法重载

 public void test() {
        System.out.println("测试重载0");
    }

    // 返回结果类型不同,不构成重载
//    public String test() { 
//        System.out.println("测试重载1");
//        return "";
//    }
    
    // 参数不同,构成重载
    public void test(int i) {
        System.out.println("测试重载2");
    }

    // 参数不同,构成重载
    public void test(int i,int y) {
        System.out.println("测试重载3");
    }

    // 看起来是参数换了个位置,但是对于计算机而已这个测试重载3和并无区别,所以不构成重载
//    public void test(int y,int i) {
//        System.out.println("测试重载4");
//    }

    // 参数类型不同,构成重载
    public void test(long i,int y) {
        System.out.println("测试重载5");
    }

    // 与测试重载4不同的是,虽然都是i和y,但是在测试重载5基础上不同类型位置顺序发生了改变,所以构成重载
    public void test(int i,long y) {
        System.out.println("测试重载6");
    }

递归

简而言之就是自己调用自己,和嵌套循环一样,描述起来可能简单,但是需要多加练习才能掌握透彻

任何能用递归解决的问题也能使用迭代解决。在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。