Java-三种基本控制结构及相关面试题

简介: Java-三种基本控制结构及相关面试题

文章目录

请说明Java中的break关键字和continue关键字?


前言

Java是一种广泛使用的编程语言,它提供了三种基本的控制结构,即顺序结构、分支结构和循环结构。这些结构是Java程序设计中不可或缺的要素,也是Java语言的重要基础。


在本文中,我们将深入探讨这三种基本控制结构的特点和用法。通过了解它们的逻辑,您可以更好地理解和运用它们,从而提高Java程序的设计水平和效率。


一、 顺序控制结构

1.1 概念

顺序控制结构是Java中最简单的控制结构,也是默认的控制结构。在顺序控制结构中,代码按照从上到下的顺序执行,每个语句都会被依次执行。


1.2 代码

public class SequentialControlExample {
    public static void main(String[] args) {
        int x = 5;
        System.out.println("x = " + x); // 输出 x = 5
        x = x * 2;
        System.out.println("x = " + x); // 输出 x = 10
    }
}

1.3 NS图中体现

二、分支控制结构

2.1 概念

分支控制结构允许根据条件来执行不同的代码块。Java中的分支控制结构包括if语句和switch语句。

2.2 if语句

if语句允许在满足条件时执行代码块。

一个 if 语句包含一个布尔表达式和一条或多条语句。

if(布尔表达式)
{
   //如果布尔表达式为true将执行的语句
}

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}

以下是一个使用if语句的示例:

public class IfControlExample {
    public static void main(String[] args) {
        int x = 5;
        if (x > 0) {
            System.out.println("x is positive");
        } else if (x < 0) {
            System.out.println("x is negative");
        } else {
            System.out.println("x is zero");
        }
    }
}

嵌套的 if…else 语句:可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。

if(布尔表达式 1){
   如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      如果布尔表达式 2的值为true执行代码
   }
}

2.3 switch语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch语句允许根据不同的条件执行不同的代码块。

switch(expression){
    case value :
       //业务语句
       break; //可写可不写
    case value :
       //业务语句
       break; //可写可不写
    //可以有任意数量的case语句
    default : //可选
       //语句
}

switch 语句中的变量类型可以是: byte、string、short、int 或者 char。

以下是一个使用switch语句的示例:

public class SwitchControlExample {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'A':
                System.out.println("Good job!");
                break;
            case 'B':
                System.out.println("Keep it up!");
                break;
            case 'C':
                System.out.println("You can do better.");
                break;
            default:
                System.out.println("Invalid grade.");
        }
    }
}

2.4 NS图中的体现

三、循环控制结构

3.1 概念

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,就需要使用循环结构。

循环控制结构允许重复执行代码块。Java中的循环控制结构包括for循环、while循环和do-while循环。

3.2 for循环

for循环允许在已知的循环次数内重复执行代码块。

以下是一个使用for循环的示例:

public class ForControlExample {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("i = " + i);
        }
    }
}

关于for循环的说明:

1、执行过程:

for 循环会遍历列表或可迭代对象中的每个元素,并将每个元素赋值给变量名。

执行循环体中的代码,即对每个元素执行相同的操作。

循环体执行完毕后,继续遍历下一个元素,直到遍历完所有元素。

2、循环结束条件:

列表或可迭代对象中的所有元素都被遍历完毕。

用户手动调用 break 语句跳出循环。

3、注意事项:

for 循环中的变量名只存在于循环体中,循环结束后会被销毁。

循环体中的代码可以修改列表或可迭代对象中的元素,但不会影响列表或可迭代对象的长度。


3.3 while循环

while循环允许在满足条件时重复执行代码块。


语法格式如下:

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

以下是一个使用while循环的示例:

public class WhileControlExample {
    public static void main(String[] args) {
        int i = 0;
        while (i < 5) {
            System.out.println("i = " + i);
            i++;
        }
    }
}

3.4 do-while循环

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。


do-while循环允许在执行一次代码块后,在满足条件时重复执行代码块。


我们可以看到布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。


语法格式如下:

do {
      //业务语句
}while(布尔表达式);

以下是一个使用do-while循环的示例:

public class DoWhileControlExample {
    public static void main(String[] args) {
        int i = 0;
        do {
            System.out.println("i = " + i);
            i++;
        } while (i < 5);
    }
}

3.5 增强 for 循环

增强 for 循环是Java5 引入了一种主要用于数组的循环

public class Test {
   public static void main(String[] args){
      int [] numbers = {10, 20, 30, 40, 50};
      for(int x : numbers ){
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      String [] names ={"heihei", "azhen", "aqiu", "aqing"};
      for( String name : names ) {
         System.out.print( name );
         System.out.print(",");
      }
   }
}

NS图中的体现

四、相关面试题

什么是控制流语句?

控制流语句是指用于控制程序执行流程的语句。Java中的控制流语句包括if语句、switch语句、for循环、while循环和do-while循环等。

Java中的嵌套循环有哪些特点?

Java中的嵌套循环具有以下特点:可以嵌套多层,外层循环会影响内层循环的执行,内层循环不会影响外层循环的执行。

Java中的循环结构有哪些特点?

Java中的循环结构具有以下特点:for循环适用于已知循环次数的情况,while循环适用于未知循环次数的情况,do-while循环保证至少执行一次循环体。

请说明Java中的break关键字和continue关键字?

Java中的break语句主要有两个作用,分别是用于跳出循环和用于跳出switch语句。

Java中的continue语句主要有两个作用,分别是用于结束本次循环和用于在switch语句中跳过当前case。

相关文章
|
1月前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
46 4
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
133 2
|
28天前
|
Java 程序员
Java社招面试中的高频考点:Callable、Future与FutureTask详解
大家好,我是小米。本文主要讲解Java多线程编程中的三个重要概念:Callable、Future和FutureTask。它们在实际开发中帮助我们更灵活、高效地处理多线程任务,尤其适合社招面试场景。通过 Callable 可以定义有返回值且可能抛出异常的任务;Future 用于获取任务结果并提供取消和检查状态的功能;FutureTask 则结合了两者的优势,既可执行任务又可获取结果。掌握这些知识不仅能提升你的编程能力,还能让你在面试中脱颖而出。文中结合实例详细介绍了这三个概念的使用方法及其区别与联系。希望对大家有所帮助!
166 60
|
4天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
49 14
|
7天前
|
安全 Java 程序员
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
38 13
|
27天前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
68 16
|
24天前
|
Java 程序员 调度
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
55 9
|
29天前
|
安全 Java 程序员
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
60 12
|
1月前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
1月前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题

热门文章

最新文章