Java基础:Java流程控制

亦凉 2024-03-31 11:26 161阅读 0赞

文章目录

  • 一、代码块
    • 1.1代码块的作用域
    • 1.2代码块的分类
    • 1.3构造方法与代码块的执行顺序
  • 二、流程控制
    • 2.1顺序结构
    • 2.2分支结构
    • 2.3循环结构
  • 三、中断控制流程语句
    • 3.1return语句
    • 3.2break关键字
    • 3.3continue语句

一、代码块

1.1代码块的作用域

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

块确定了变量的作用域。

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

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

1.2代码块的分类

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

  • 局部代码块: 类中方法的方法体,局部代码块是定义在方法或语句中,方法和类都是以代码块的方式划定边界的;
  • 构造代码块: 定义在类中成员位置,方法之外的代码块,构造代码块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行。

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

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

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

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

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

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

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

二、流程控制

2.1顺序结构

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

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

2.2分支结构

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

if…else语句:

  1. public class DemoTest {
  2. public static void main(String[] args) {
  3. int a = 10;
  4. int b = 10;
  5. if(a == b){
  6. System.out.println("a 等于 b");
  7. }else{
  8. System.out.println("a 不等于 b");
  9. }
  10. }
  11. }

switch-case语句:

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

2.3循环结构

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

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

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

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

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

for语句:






























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

foreach语句:

语法格式

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

例如:

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

三、中断控制流程语句

3.1return语句

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

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

3.2break关键字

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

3.3continue语句

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

发表评论

表情:
评论列表 (有 0 条评论,161人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java基础Java流程控制

    > 块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。但是,不能在嵌套的两个块中声明同名的变量。使用块(有

    相关 Java基础流程控制

    上次的运算符都消化好了吗?每一天都要用到一些哦~ 以前有提到过一嘴,程序执行都是从上到下执行的,emm,学到这里,感觉这句话是对的也是错的了…… 如果都是一行一行执行下去的