Java面试50问,女面试官最喜欢问的居然是它!

简介: Java面试50问,女面试官最喜欢问的居然是它!

[] 什么是try-catch-finally块?

在Java中,try-catch-finally块是异常处理的核心结构,用于捕获和处理程序运行时可能出现的异常。这个结构由三个部分组成:

1. try块:包含可能会抛出异常的代码。如果try块中的代码执行过程中没有发生任何异常,那么紧随其后的catch块将被忽略。

try {
   // 可能会抛出异常的代码
}

2. catch块:紧随try块之后,用于捕获和处理try块中抛出的异常。可以有多个catch块,每个catch块处理不同类型的异常。

catch (ExceptionType1 e1) {
   // 处理ExceptionType1类型的异常
}
catch (ExceptionType2 e2) {
   // 处理ExceptionType2类型的异常
}
// 可以有更多catch块

  注意:catch块中的参数通常是异常实例的引用,通常命名为e(代表exception,异常)。

3. finally块:无论是否发生异常,以及是否捕获了异常,finally块中的代码都会执行。这使得finally块成为执行资源清理操作(如关闭文件流或数据库连接)的理想位置。

finally {
   // 无论是否发生异常,这些代码都会执行
}

一个完整的try-catch-finally示例可能如下所示:

try {
   // 尝试执行的代码,可能会抛出异常
   FileReader reader = new FileReader("file.txt");
   // ...
} catch (FileNotFoundException e) {
   // 如果文件未找到,处理这个异常
   System.err.println("文件未找到: " + e.getMessage());
} finally {
   // 无论是否发生异常,都会执行的代码
   // 例如,关闭打开的资源
}

在上述示例中,如果FileReader构造函数抛出FileNotFoundException,那么这个异常将被相应的catch块捕获并处理。无论是否抛出异常,finally块中的代码都会执行,这通常用于确保资源被正确关闭,即使在发生异常的情况下。

需要注意的是,如果try块中的代码正常结束,那么紧随其后的catch块将被跳过。如果try块中的代码因为异常而退出,那么匹配异常类型的catch块将被执行。如果所有catch块都不能匹配抛出的异常类型,那么异常将向上抛到调用栈的上一层,直到被捕获或者程序终止。

[] 什么是Java的访问修饰符?

在Java中,访问修饰符用于定义类、方法、构造器和变量的访问级别。它们控制其他类对这些成员的访问权限。Java支持四种访问修饰符:

1. public:
 - public是最具包容性的访问修饰符。声明为public的类或成员可以被任何其他类访问,不受限制。

2. protected:
 - protected访问级别比public稍微受限。声明为protected的成员可以被同一个包内的其他类以及不同包中继承了该类的子类访问。

3. 默认(无修饰符):
 - 如果没有指定访问修饰符(也就是什么也不写),那么成员具有默认访问级别,通常称为“包访问级别”。
 - 默认访问级别的成员只能被同一个包内的其他类访问,不同包的类无法访问。

4. private:
 - private是访问限制最严格的修饰符。声明为private的成员只能被其所在的类访问,即使是同一个包内的其他类或继承了该类的子类也无法访问。

以下是每种访问修饰符的典型使用场景:

- public:当你希望成员被广泛访问时使用,例如,当创建一个API或库时。
- protected:当你希望子类能够访问父类的某些成员,但又不希望这些成员对同一个包内的非子类公开时使用。
- 默认:当你希望限制访问仅限于同一个包内时使用。
- private:当你希望隐藏类的内部实现细节,只允许通过类的公共接口与类的对象交互时使用。

访问修饰符是封装原则的关键部分,它们允许开发者隐藏内部实现,只暴露必要的操作和属性,从而提高代码的安全性和易于维护。

相关文章
|
1天前
|
缓存 Java 数据库连接
java面试题目 强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?
【6月更文挑战第28天】在 Java 中,理解和正确使用各种引用类型(强引用、软引用、弱引用、幻象引用)对有效的内存管理和垃圾回收至关重要。下面我们详细解读这些引用类型的区别及其具体使用场景。
10 3
|
2天前
|
安全 算法 Java
java多线程面试题2019整理
java多线程面试题2019整理
|
2天前
|
负载均衡 NoSQL Dubbo
java分布式面试快问快答
java分布式面试快问快答
9 0
|
2天前
|
XML Java 数据库连接
面试必备!Java核心技术100+面试题
面试必备!Java核心技术100+面试题
|
2天前
|
算法 Java 调度
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
7 0
|
2天前
|
SQL 网络协议 Java
技术经验分享:Java不会或做错的面试题总结
技术经验分享:Java不会或做错的面试题总结
11 0
|
2天前
|
安全 Java 中间件
《面试专题-----经典高频面试题收集一》解锁 Java 面试的关键:深度解析常见高频经典面试题(第一篇)
《面试专题-----经典高频面试题收集一》解锁 Java 面试的关键:深度解析常见高频经典面试题(第一篇)
8 0
|
2天前
|
安全 Java API
《面试专题-----经典高频面试题收集三》解锁 Java 面试的关键:深度解析并发编程基础篇高频经典面试题(第三篇)
《面试专题-----经典高频面试题收集三》解锁 Java 面试的关键:深度解析并发编程基础篇高频经典面试题(第三篇)
7 0
|
9天前
|
设计模式 SQL JavaScript
java面试宝典全套含答案
java面试宝典全套含答案
|
9天前
|
存储 Java
java面试题大全带答案_面试题库_java面试宝典2018
java面试题大全带答案_面试题库_java面试宝典2018