Java基础:Java流程控制

一、代码块

1.1代码块的作用域

(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。

块确定了变量的作用域。

一个块可以嵌套在另一个块中。但是,不能在嵌套的两个块中声明同名的变量。

有名字的代码块—— if-else 代码块,for 循环代码块,main 方法代码块。代码块也叫体,比如 for 循环体,main 方法体。

1.2代码块的分类

根据代码块位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块和同步代码块:

  • 局部代码块: 类中方法的方法体,局部代码块是定义在方法或语句中,方法和类都是以代码块的方式划定边界的;

  • 构造代码块: 定义在类中成员位置,方法之外的代码块,构造代码块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行。

    特点:
    ①优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作;
    ②每创建一个对象均会执行一次构造代码块;

  • 静态代码块: 用static{}包裹起来的代码片段,只会执行一次,静态代码块优先于构造块执行。

    特点:
    ①静态代码块是定义在成员位置,方法之外,使用static修饰的代码块;
    ②它优先于主方法执行、优先于构造代码块执行,在类加载时执行;
    ③该类不管创建多少对象,静态代码块只执行一次;
    ④可用于给静态变量赋值,用来给类进行初始化;

  • 同步代码块: 当线程开始执行同步代码块前,必须先获得对同步代码块的锁定,并且任何时刻只能有一个线程可以获得对同步监视器的锁定,当同步代码块执行完成后,该线程会释放对该同步监视器的锁定。

    特点:
    ①使用synchronized(){}包裹起来的代码块;
    ②在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性;
    ③同步代码块需要写在方法中。

1.3构造方法与代码块的执行顺序

父类B静态代码块 > 子类A静态代码块 > 父类B非静态代码块 > 父类B构造函数 > 子类A非静态代码块 > 子类A构造函数

二、流程控制

2.1顺序结构

按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

//顺序输出:123
public class DemoTest {
    public static void main(String[] args) {
        System.out.print(1);
        System.out.print(2);
        System.out.print(3);
    }
}

2.2分支结构

有if…else和switch-case两种分支语句。

if…else语句:

public class DemoTest {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        if(a == b){
            System.out.println("a 等于 b");
        }else{
            System.out.println("a 不等于 b");
        }
   }
}

switch-case语句:

public class DemoTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("只能输入1,2,3:");
        int a = sc.nextInt();
        //case 标签可以是:① 类型为char、byte、short 或 int 的常量表达式。②枚举常量。③从 Java SE 7 开始,case 标签还可以是字符串字面量。
        switch(a){
            case 1:
                System.out.println("one");
                break;//如果没有break会依次执行下面case块。
            case 2:
                System.out.println("two");
                break;//如果没有break会依次执行下面case块。
            case 3:
                System.out.println("three");
                break;//如果没有break会依次执行下面case块。
            default:
                System.out.println("输入错误,请重新输入");
        }
    }
}

2.3循环结构

java提供三种循环: while、do…while、for 。 另外 Java 5 之后推出了 for-each 循环语句,for-each 循环是 for 循环的变形,它是专门为集合遍历而设计的。for-each 并不是一个关键字。

while语句: 先判断 条件,再选择是否执行循环体。

public class DemoTest {
    public static void main(String[] args) {
        int i = 1;
        int n = 1;
        while(i <= 10) {
            n=n*i;
            i++;
        }
        System.out.println("10的阶乘结果为:"+n);//10 阶乘结果是:3628800
    }
}

do…while语句: 先执行循环体,然后判断循环条件是否成立。

public class DemoTest {	
    public static void main(String[] args) {
        int number = 1,result = 1;
        do {
            result*=number;
            number++;
        }while(number <= 10);
        System.out.print("10阶乘结果是:"+result);//10 阶乘结果是:3628800
    }
 }

for语句:

表达式形式功能举例
条件表达式 1赋值语句循环结构的初始部分,为循环变量赋初值int i=1
条件表达式 2条件语句循环结构的循环条件i>40
条件表达式 3迭代语句,通常使用 ++ 或 – 运算符循环结构的迭代部分,通常用来修改循环 变量的值i++
public class DemoTest {
    public static void main(String[] args) {
        int result = 1;
        for (int number = 1; number <= 5; number++) {
            result *= number;
        }
        System.out.print("5 的阶乘结果是:" + result);   // 5的阶乘结果是:120
    }
}
public class DemoTest {
    public static void main(String[] args) {
        System.out.println("乘法口诀表:");
        // 外层循环
        for (int i = 1; i <= 9; i++) {
            // 内层循环
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + j * i + "\t");
            }
            System.out.println();//换行
        }
    }
}

foreach语句:

语法格式

for(类型 变量名:集合) {
    语句块;
}

例如:

public class DemoTest {
    public static void main(String[] args) {
        // 声明并初始化int数组
        int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
        System.out.println("----for each----");
        // for-each语句
        for (int item : numbers) {
            System.out.println("Count is:" + item);
        }
    }
}

三、中断控制流程语句

3.1return语句

return 关键字并不是专门用于结束循环的,return语句用于终止函数的执行或退出类的方法,并把控制权返回该方法的调用者。

如果这个方法带有返回类型,return 语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达式的 return 语句。

3.2break关键字

break 用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到 break,系统将完全结束该循环,开始执行循环之后的代码。

3.3continue语句

continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代
continue 语句只能用在 while 语句、for 语句或者 foreach 语句的循环体之中,在这之外的任何地方使用它都会引起语法错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值