Java面试题
欢迎大家讨论与交流,谢谢!
从未止步..
努力努力再努力!
展开
-
每日一道面试题之介绍一下4+1视图模型!
通过将不同视图结合起来,4+1视图模型能够提供一个全面的系统设计,从不同角度展示系统的不同方面,从不同的角度来理解和描述软件系统,同时也能够满足不同利益相关者的需求。帮助开发团队理解和沟通系统的设计。,它由4个逻辑视图和一个场景视图组成,每个视图都关注系统的不同方面,为的就是尽可能实现一个全面的系统设计。,以及系统对这些场景和交互的响应。它包括软件组件图、包图等。原创 2023-09-11 01:00:00 · 278 阅读 · 1 评论 -
每日一道面试题之什么是C/S架构?什么是B/S架构?
在C/S架构中,客户端负责用户界面和交互,而服务器负责处理业务逻辑和数据存储。例如:我们经常使用的。在B/S架构中,服务器负责处理业务逻辑和数据存储,而客户端只负责显示和交互。例如:我们经常使用的。,其中客户端应用程序与服务器应用程序之间。(如MySQL、SQL Server),(Browser/Server架构)是。(Client/Server架构)是。原创 2023-09-10 01:00:00 · 97 阅读 · 1 评论 -
每日一道面试题之软件体系结构的核心要素有哪些?各起什么作用?
这样一来不仅实现了系统的可拓展性,也使得系统变得更加灵活,通过模块化和组件化,我们将一个系统进行了划分,使得其变成了相互独立的组件或者模块,这些模块和组件之间并不是完全独立的个体,他们都是系统的一部分,因此我们需要通过某种方式将他们互相关联,对此,软件体系结构中的核心要素。,这样一来,不仅提高了代码的重用性,而且也易于代码的维护,但即使是模块,它所涉及到的内容也有很多,假设未来我们想对已有的软件进行拓展,添加新的功能,可能会涉及到某个模块整体都需要改变,对此,当系统使用一定的时间后,可能会。原创 2023-09-09 01:00:00 · 89 阅读 · 0 评论 -
每日一道面试题之OSI 的七层模型都有哪些?
将比特流转换为电压、光信号等物理信号,,如电子邮件、文件传输、远程登录等。,每个层次负责不同的功能,通过。,并进行错误检测和纠正,**数据链路层(Data Link Layer**):`负责将物理层传输的比特流划分为一个个数据帧`,并进行错误检测和纠正,**提供可靠的点对点数据传输**。**网络层(Network Layer)**:`负责对数据进行分组和路由选择`,并进行网络互连,**实现不同网络之间的通信**。 **传输层(Transport Layer)**:`负责为应用层提供端到端的可靠的数据原创 2023-09-07 00:45:00 · 87 阅读 · 1 评论 -
每日一道面试题之http 响应码 301 和 302 代表的是什么?它们有什么区别?
然后再次请求新的URL。搜索引擎在收到302响应后,会将权重和排名从原始URL转移到新的URL。使用302重定向时,不需要更新旧的URL。搜索引擎也会将旧的URL指向新的URL。使用301重定向时,建议将旧的URL更新为新的URL,以免影响用户体验。原创 2023-09-06 00:45:00 · 722 阅读 · 0 评论 -
每日一道面试题之请介绍一下session的工作原理
从而可以获取用户的状态和其他相关数据。服务器可以根据会话信息来判断用户的身份、权限等信息,并进行相应的处理和响应。服务器会将用户的会话信息存储在服务器端的内存或数据库中,并与该 Session ID 相关联。,服务器为用户创建一个唯一的 Session ID,并将其发送给用户的浏览器。,浏览器会自动将之前存储的 Session ID 发送给服务器。,以便下次请求时发送给服务器。,并进行相应的处理和响应。,会话信息会被销毁或清除。原创 2023-09-05 02:00:00 · 234 阅读 · 0 评论 -
每日一道面试题之什么是上下文切换?
的,他需要相当可观的处理器时间,在每秒几十上百次的切换中,每次切换都需要纳秒量级的时间,因此,上下文切换对系统来说意味着需要。,因为需要保存和恢复进程或线程的状态信息,包括寄存器值、内存映像等。因此,在设计高效的操作系统调度算法时,需要。(包括程序计数器、寄存器值、内存映像等)上下文切换是指在计算机操作系统中,消耗大量的CPU时间。原创 2023-09-04 20:00:00 · 704 阅读 · 0 评论 -
每日一道面试题之如果客户端禁止 使用cookie那么还能实现session吗?
将session标识符添加到HTTP请求头中,并在每个请求中发送该标识符。服务器需要解析请求头中的session标识符。,并在每个页面和请求中传递该标识符。这种方法需要在每个页面和请求中手动处理session标识符。,并在每个表单提交时将其发送到服务器。服务器需要处理并验证隐藏字段中的session标识符。,但仍然可以通过其他方式实现session。但上述这些替代方案可能会。禁止使用cookie。原创 2023-08-20 01:00:00 · 382 阅读 · 0 评论 -
每日一道面试题之session 和 cookie 有什么区别?
**存储位置**:`Cookie`是`存储在用户浏览器中的小型文本文件`,而`Session`是`存储在服务器上的数据结构`。 **数据安全性**:`Cookie中的数据可以被用户修改和篡改`,因此**不适合存储敏感信息**。而`Session中的数据存储在服务器上`,`用户无法直接修改`,因此更安全。**存储容量**:`Cookie的存储容量较小`,一般为4KB,而`Session的存储容量较大`,可以根据服务器的配置进行调整。**存储时间**:`Cookie可以设置过期时间`,可以在用户关闭原创 2023-08-17 01:03:06 · 434 阅读 · 0 评论 -
每日一道面试题之 介绍一下jsp 的 4 种作用域
在整个应用程序中,这些变量或对象可以被所有用户的所有请求访问和使用。只有在Web应用程序停止或重新部署时,Application作用域才会失效。在同一个请求中,这些变量或对象可以被该请求中的任何页面或组件访问和使用。当请求完成后,Request作用域就会失效。在同一个用户会话中,这些变量或对象可以被该用户的所有请求访问和使用。当用户会话结束后,Session作用域就会失效。在该页面中,这些变量或对象可以被任何地方访问和使用。当请求完成后,Page作用域就会失效。:Application作用域是指。原创 2023-08-19 01:00:00 · 92 阅读 · 0 评论 -
每日一道面试题之forward 和 redirect 的区别?
即在服务器内部将请求转发到另一个资源,然后由该资源处理请求并返回响应。在这个过程中,服务器内部的跳转是透明的,浏览器并不感知到实际的跳转操作,浏览器收到响应后会重新发送一个新的请求,访问该URL地址。在这个过程中,URL地址栏会发生改变。,即服务器向浏览器发送一个响应,告诉浏览器。原创 2023-08-18 01:00:00 · 97 阅读 · 1 评论 -
每日一道面试题之jsp 有哪些内置对象?作用分别是什么?
JSP(JavaServer Pages)有。,如下所示,这些内置对象可以在JSP页面中。,例如将文本、HTML标签等发送给客户端。,例如Servlet的初始化参数。,可以在不同的页面之间共享数据。,可以在整个应用程序中共享数据。,可以用于调用页面上定义的方法。,例如设置响应头、发送数据等。,提供了对其他内置对象的访问。,例如请求参数、请求头等。,可以用于处理异常情况。用于向客户端发送响应。当前JSP页面的实例。原创 2023-08-17 00:43:48 · 164 阅读 · 2 评论 -
每日一道面试题之jsp 和 servlet 有什么区别?
因为它可以直接嵌入Java代码,并且提供了方便的标签库和表达式语言。在实际开发中,我们需要根据具体的需求进行选择,通常情况下,,因为它是纯Java代码,可以在不同的应用程序中重复使用。是Java Web开发中常用的两种技术,(JavaServer Pages)和。,其中可以嵌入Java代码片段。,然后由Servlet容器执行。相对来说更侧重于视图层的展示,相对于Servlet来说,,特别是对于前端开发人员。,但需要更多的编码工作。,没有特殊的标记语言。原创 2023-08-10 02:30:00 · 79 阅读 · 2 评论 -
每日一道面试题之谈一谈HashMap和HashSet的区别
**HashMap**和**HashSet**是Java中**两种不同的集合类**,它们有以下区别:**数据结构**:`HashMap`是`基于哈希表实现`的,而`HashSet是基于哈希表的Set`实现。**元素存储**:`HashMap存储键值对`(key-value),`每个元素都有一个唯一的键和对应的值`。`HashSet存储唯一的元素`,没有键值对的概念。**元素顺序**:`HashMap不保证元素的顺序`,元素的存储顺序可能与插入顺序不同。`HashSet也不保证元素的顺序`,元素的原创 2023-08-09 01:00:00 · 130 阅读 · 0 评论 -
每日一道面试题之什么是栈?什么是队列?它们之间有什么区别?
是一种`后进先出`(LIFO)的数据结构,类似于现实生活中的`堆叠`。元素从**栈的顶部插入和删除**。`新元素总是被插入到栈的顶部`,而**最早插入的元素总是在栈的底部**。栈的操作包括`入栈`(push)和`出栈`(pop)。## 主要区别如下:**插入和删除操作的顺序**:`队列是先进先出`,而`栈是后进先出`。**插入和删除操作的位置**:`队列的插入和删除分别在队尾和队头进行`,而`栈的插入和删除都在栈顶进行`。**元素的访问方式**:`队列只能访问队头的元素`,而`栈可以访问原创 2023-08-08 01:06:15 · 190 阅读 · 2 评论 -
每日一道面试题之怎么确保一个集合不能被修改?
等)创建一个只读的集合。这样,任何尝试修改集合的操作都会抛出。这样,在使用集合的代码中,只能。需要注意的是,以上方法只能。:使用不可变集合类(如。:在返回集合的方法中,只提供读取元素的方法。不提供修改元素的方法。防止直接修改集合对象。需要注意的是,以上方法只能`防止直接修改集合对象`,但**无法防止修改集合中的可变对象**。**如果集合中的元素是可变对象,仍然可以通过引用修改对象的属性。如果需要确保集合中的元素也不能被修改,可以使用不可变对象或者进行深拷贝来保护集合中的元素。**原创 2023-08-03 00:30:00 · 280 阅读 · 0 评论 -
每日一道面试题之Iterator 和 ListIterator 有什么区别?
因为 ListIterator 接口需要维护额外的指针和索引信息。,而 ListIterator 接口除了遍历集合元素外,还可以。,而 ListIterator 接口可以通过。都是 Java 集合框架中。,即向前或向后遍历集合元素。方法从集合的末尾开始遍历。listIterator=arrayList.listIterator(); System.out.println("listIterator正向遍历的结果为:"); while(listIterator.hasNext(原创 2023-08-02 19:18:23 · 368 阅读 · 2 评论 -
每日一道面试题之介绍一下Iterator
通过Iterator,可以,而无需了解集合的内部实现细节。**单向遍历**:Iterator只能单向遍历集合,即只能`从前往后依次访问元素`,`不能逆向遍历或跳跃访问`。**安全删除**:Iterator提供了`remove()方法`,可以在遍历过程中安全地删除集合中的元素,而不会引发`ConcurrentModificationException异常`。**遍历速度快**:Iterator是基于集合的`内部数据结构`实现的,因此遍历速度通常比使用普通的for循环快。**适用于各种集合**:It原创 2023-07-28 13:32:30 · 321 阅读 · 3 评论 -
每日一道面试题之迭代器 Iterator 是什么?
迭代器(Iterator)是一种。它提供了一种,而且,它通常,通过调用集合类的iterator()方法来获取一个迭代器对象,这样就可以。需要注意的是,**迭代器通常是单向的**,即只能`向前遍历集合中的元素,不能后退或随机访问。`如果需要在遍历过程中**修改集合**,需要使用迭代器的 **remove() 方法来删除元素**,而**不能直接使用集合类的方法**。如果**在迭代过程中修改了集合的结构**(如添加或删除元素),**可能会导致 `ConcurrentModificationException`原创 2023-07-27 00:30:00 · 113 阅读 · 1 评论 -
每日一道面试题之Java中,有哪些常见的集合类是线程安全的?
基于 CopyOnWriteArrayList 实现,适用于。在 Java 中,有几个常见的集合类是线程安全的,它们可以。虽然上述线程安全的集合类提供了内部的同步机制,,但在某些特定的场景下,仍然需要。,继承自 Vector 类。,可以在多线程环境下使用。,可以在多线程环境下使用。线程安全的哈希表实现。线程安全的哈希表实现。原创 2023-07-26 00:30:00 · 186 阅读 · 0 评论 -
每日一道面试题之在 Queue 中 poll()和 remove()有什么区别?
在 Queue 中,**poll()** 和 **remove()** 都是用于`从队列中移除并返回队列的头部元素`。它们的`区别在于当队列为空时的处理方式`。**poll() 方法在队列为空时返回 null**。**remove() 方法在队列为空时会抛出 `NoSuchElementException` 异常。**因此,如果`不确定队列是否为空`,`可以使用 poll() 方法来避免异常的抛出`;如果`确定队列不为空`,`可以使用 remove() 方法来获取队列的头部元素。`原创 2023-07-25 08:30:09 · 161 阅读 · 0 评论 -
每日一道面试题之如何实现数组和 List 之间的转换?
要实现数组和List之间的转换,可以使用Java中的和提供的方法。注意:`数组和List之间的转换是浅拷贝的`,它们**共享相同的元素**。**对于数组转换为List,对List的修改会反映到原始数组中,对于List转换为数组,对数组的修改会反映到原始List中。**如果要将`List转换为数组`时想指定数组的类型,可以传递`一个具有相同类型的空数组作为参数`。如果传递的数组长度小于List的大小,将会创建一个新的数组来存储List的元素。原创 2023-07-23 00:30:00 · 605 阅读 · 0 评论 -
每日一道面试题之HashSet的实现原理~
将元素作为键,将PRESENT作为值存储到HashMap中。由于HashMap的键是唯一的,所以HashSet中的元素也是唯一的。,如果这两个方法没有正确被实现,那么很有可能会导致HashSet无法正确判断元素是否是唯一的。但是,HashSet并不保证元素的顺序,因为它是基于哈希表实现的。HashSet的主要优点是它提供了**时间复杂度为O(1)**的。,HashSet会调用HashMap的。,HashSet会调用HashMap的。,将元素作为键从HashMap中删除。在HashSet中,元素。原创 2023-07-21 21:40:22 · 204 阅读 · 0 评论 -
每日一道面试题之set有哪些实现类?
以上为java中实现类都是Set接口的具体实现,在实际开发中,我们需要根据具体的需求和场景选择合适的实现类。,不允许有重复的元素,但是。,保证读操作的线程安全性。允许存储null元素。指定的比较器进行排序。允许存储null元素。原创 2023-07-21 00:30:00 · 72 阅读 · 0 评论 -
每日一道面试题之HashMap 和 Hashtable 有什么区别?
在单线程环境下,HashMap的性能更好。另外,由于HashMap允许使用null键和null值,它的存取操作相对于Hashtable来说更加灵活。,如果尝试存储null键或值,会抛出NullPointerException。,如果在多线程环境下使用HashMap,需要自行保证线程安全。的子类,而HashMap是AbstractMap类的子类,但是。因此在实际开发中,我们需要根据实际情况在二者之间进行选择,如果。,可以存储null键和null值。,可以在多线程环境下安全使用。原创 2023-07-19 00:30:00 · 86 阅读 · 0 评论 -
每日一道面试题之list和set有什么区别?
在实际开发中,我们需要根据具体的需求,来选择合适的集合类型,如果我们。,虽然它们都继承自Collection接口,但在使用上有一些区别。,每个元素在Set中只能出现一次。,它可能受到底层数据结构的影响。,即可以包含相同的元素多次。,它不保证元素的顺序,也。List是有序的集合。**迭代顺序**:`List的迭代顺序是按照元素的插入顺序进行的`。而`Set的迭代顺序是不确定的`,它可能受到底层数据结构的影响。在实际开发中,我们需要根据具体的需求,来选择合适的集合类型,如果我们**需要有序存储并且允许重复元原创 2023-07-18 12:27:20 · 667 阅读 · 2 评论 -
每日一道面试题之ArrayList 和 LinkedList 的区别是什么?
不仅需要存储数组元素的值,还需要额外的存储指针的相关信息来维护链表结构,因此。在插入和删除元素时,需要移动其他元素来保持其数组元素位置的连续性,因此,在插入和删除元素时,只需要修改前后元素的指针,因此。在内存中连续存储元素,只需要存储数组元素的值,因此。因此,关于二者如何选择,我们可以根据需求来决定,,因为它可以直接通过索引访问元素。,因为它需要从头或尾开始遍历链表。,因为要移动大量的元素。通过数组元素的索引值。时间复杂度为O(1)时间复杂度为O(n)原创 2023-07-16 22:40:37 · 447 阅读 · 0 评论 -
每日一道面试题之Collection 和 Collections 有什么区别?
Collection和Collections是Java集合框架中的两个重要的概念,它们在Java集合框架中扮演不同的角色。,Collections类中的方法包括对集合进行排序、查找、替换、反转等操作,以及创建不可修改的集合、线程安全的集合等,它。,Collection接口的常见实现类包括。等,分别定义了不同的存储方式。,该类不能实例化,它提供了。原创 2023-07-13 21:00:00 · 760 阅读 · 0 评论 -
每日一道面试题之常见的Java容器都有哪些?
哈希表,可以存储键值对,它使用键的哈希值来确定存储位置,可以快速地插入和检索数据。:有序键值对集合,根据键的自然顺序进行排序。:双向链表,可以高效地进行插入和删除操作。:有序集合,按照元素的自然顺序进行排序。:有序键值对集合,根据插入顺序进行排序。:动态数组,可以根据需要自动扩展大小。:动态数组,可以根据需要自动扩展大小。:优先队列,根据元素的优先级进行排序。:无序键值对集合,根据键快速查找值。:无序集合,不允许重复元素。原创 2023-07-12 22:55:39 · 111 阅读 · 1 评论 -
每日一道面试之byte类型127+1等于多少?
首先我们将127转化为二进制形式为01111111,它的补码同样也为01111111,执行+1操作后得到计算结果为10000000,由于它是负数的补码形式,因此我们先按位取反,得到01111111为他的反码,此时的01111111为正数,因此我们原码和反码相同,我们将其转化为二十进制数得到结果为127,在加上负号再减1得到-128。,而在计算机中,数据都是以二进制的形式进行存储的,并且。,可以直接转化为二进制数,而对于负数来说,假设。原创 2023-07-08 16:56:36 · 484 阅读 · 0 评论 -
每日一道面试题之在java中,有哪些方式可以实现对象的实例化?
使用 `new 关键字`可以`直接调用类的构造方法`来实例化对象。Student student = new Student();使用反射:通过反射机制,可以`在运行时动态地实例化对象`。使用 Class 类的 `newInstance在设计模式中,工厂方法模式可以。,可以实例化一个对象的副本。使用 Class 类的。,就可以使用该接口中的。可以创建一个类的实例。来创建一个对象的副本。直接调用类的构造方法。clone() 方法。将对象序列化为字节流。原创 2023-07-07 21:36:20 · 180 阅读 · 4 评论 -
每日一道面试题之什么情况下会更倾向于使用抽象类而不是接口?
抽象类可以包含非抽象方法及有关实现,而接口只能定义抽象方法。**需要提供默认的实现或者需要在类中定义非抽象方法**:抽象类可以包含非抽象方法及有关实现,而接口只能定义抽象方法。**需要共享状态或数据**:抽象类可以包含成员变量,而接口只能包含常量。如果需要在类中定义一些**非公共的成员变量或方法**,并且希望子类继承和使用这些成员变量或方法,那么抽象类相比于接口是更合适的选择。**需要使用构造函数**:抽象类可以有构造函数,而接口不能有构造函数。假设我们需要在类的实例化过程中执行一些初始化操作,那原创 2023-07-06 15:29:27 · 410 阅读 · 4 评论 -
每日一道面试题之在 Java 中,什么时候用重载,什么时候用重写?
重写是多态性的重要体现之一,它是指`在子类中可以定义名称,参数列表,返回值类型均与父类中某个方法完全相同的方法`,我们就说子类中定义的这个方法覆盖了父类中的同名方法。重写的目的是**为了改变方法的实现逻辑**,使其适应子类的特定需求,在调用重写方法时,`根据对象的实际类型来确定调用哪个方法`,这称为动态绑定。重写方法必须满足“**子类方法的访问权限不能低于父类方法**”的原则。注意:方法重写时,**参数列表,返回值的类型是一定不能修改的**,`异常可以减少或者删除,但是不能抛出新的异常或者更广的异常`原创 2023-07-05 10:23:00 · 490 阅读 · 1 评论 -
每日一道面试题之什么是Java内存模型?
**有序性保证**:Java内存模型`保证程序的执行顺序按照代码的先后顺序执行,但不保证不同线程中的操作的顺序`。即`JMM允许指令重排序,但会保证重排序后的执行结果与代码顺序一致`。这样可以提高程序的执行效率,仍然保证了多线程环境下的正确性。**volatile关键字**:Java内存模型提供了volatile关键字,**用于修饰变量**。对于volatile修饰的变量,**JMM保证对该变量的读写操作具有原子性和可见性**。即`对volatile变量的写操作会立即刷新到主内存,对volatile变量原创 2023-07-04 17:05:17 · 338 阅读 · 4 评论 -
每日一道面试题之介绍一下Java Bean并谈谈它的命名规范~
JavaBean 是一种用于创建可重用组件的约定,它通常用于在不同的 Java 应用程序和框架之间传输和保存数据。在用户界面中,JavaBean 通常表示用于显示或输入数据的表单控件。在企业应用程序中,JavaBean 通常表示业务对象或数据处理对象,它们封装着应用中的数据和业务逻辑。JavaBean将一些数据封装在一起,以提供更加简便的访问,其主要目的是将业务应用程序的业务逻辑与视图界面分离,使它们彼此独立并减少它们之间的依赖性。原创 2023-06-19 08:23:46 · 960 阅读 · 0 评论 -
每日一道面试题之在 Java 中,为什么不允许从静态方法中访问非静态变量?
无论是**静态方法**还是**静态变量都是与类相关联的**,二者`均属于类本身`,因此可以**在不创建类实例的情况下,调用静态方法和访问静态变量**。但`非静态方法和非静态变量是与类的实例相关联的`,**二者属于类的对象**,只有产生该类的实例化对象,`通过实例化对象才能访问非静态变量或者非静态方法`,因此在没有创建该类实例的情况下,这些非静态变量变量并不存在,所以无法通过静态方法去访问非静态变量。原创 2023-06-18 15:51:08 · 362 阅读 · 3 评论 -
每日一道面试题之Java中都有哪些引用类型?
当垃圾回收器决定要回收内存时,只会**回收软引用对象所指向的堆内存对象**,并且只有在内存不足时才会进行回收,**如果回收了软引用对象之后仍然没有足够的内存,就会出现`内存溢出异常`**。例如:**最弱的引用类型**,`虚引用不能单独使用`,必须和引用队列(ReferenceQueue)合作使用。**当垃圾回收器把一个对象回收时,如果这个对象有一个虚引用,则会将这个虚引用加入到与之关联的引用队列中**,**程序可以通过判断引用队列中是否加入了引用,来判断被引用的对象是否将要被垃圾回收**,这样可以在对象原创 2023-06-16 09:41:31 · 592 阅读 · 3 评论 -
每日一道面试题之java 中操作字符串都有哪些类?它们之间有什么区别?
- **String 是不可变的字符串类**,创建后内容不能更改,而 **StringBuilder 和 StringBuffer 是可变的字符串类**,可以在原始字符串的基础上进行添加、修改和删除操作。- **StringBuilder 和 StringBuffer 的区别在于`线程安全性`**,推荐在多线程环境下使用 StringBuffer,因为它是线程安全的,而在单线程环境下使用 StringBuilder,因为它速度快。- **StringJoiner 是在 Java 8 中提供的新类**原创 2023-06-14 11:09:53 · 372 阅读 · 0 评论 -
每日一道面试题之介绍一下常见的异常类有哪些?
例如:网络连接中断或无法连接,读取或写入文件时发生错误,试图对已关闭的流进行操作。1:网络连接、IO设备故障 2:对受保护没有权限的文件进行操作时 3:当读取的文件、目录不存在或者创建一个已经存在的目录时: 4:对处于阻塞/睡眠/等待状态的线程调用了它的interrupt方法:我们使用java提供的Integer.parseInt(s)方法将字符串转化为数字时,如果该字符串包含除数字以外的其他任何字符就会抛出该异常原创 2023-06-12 14:42:04 · 380 阅读 · 0 评论 -
每日一道面试题之try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
**finally代码段不是必须有的**,但是如果有该代码段,**必须紧跟在最后一个catch代码段后面**,作为异常处理机制的统一出口(做善后处理),例如资源的关闭,`无论try中是否产生异常,finally中的代码总在当前方法返回之前无条件执行`,因此即使catch中包含return的代码,finally依然会执行,并且是在return语句执行之前执行,但需要注意的是,`如果在某个catch代码段中已经执行了要终止程序的System.exit()方法,那么此时finally中的代码不会执行。`原创 2023-06-12 08:21:51 · 431 阅读 · 0 评论