Java 常见编程面试题解析(第一部分)

为什么 Java 被称为“平台独立的编程语言”?

平台独立性意味着我们程序的执行不依赖于操作系统的类型(无论是 Linux、Windows 还是 Mac 等)。我们只需要编译一次代码,就可以在任何系统上运行它(而在 C/C++ 中,我们需要在每一台运行代码的机器上重新编译)。Java 是一种同时基于编译器和解释器的语言。我们的 Java 源代码首先通过 javac 编译器编译成字节码。这种字节码可以很容易地通过 JVM 转换成等价的机器码。JVM(Java 虚拟机)在我们安装的所有操作系统中都可用。因此,由 javac 生成的字节码是通用的,可以在任何操作系统上转换为机器码,这就是 Java 平台独立的原因。

解释 Java 中的 Final 关键字?

Java 中的 final 关键字用于限制对变量、类和方法的使用。

  • 变量:final 变量的值是常量,我们无法修改它。
  • 方法:我们无法重写 final 方法。
  • :我们无法继承 final 类。

点击这里查看详情。

什么时候使用 super 关键字?

super 关键字用于引用:

  • 直接父类构造函数
  • 直接父类变量
  • 直接父类方法

点击这里查看详情。

StringBuffer 和 String 有什么区别?

String 是一个不可变类,这意味着一旦创建,我们就无法修改其内容。而 StringBuffer 是一个可变类,意味着我们可以稍后修改其内容。每当我们修改 String 对象的内容时,它会创建一个新的字符串并引用它,而不会修改现有的字符串。这就是为什么 StringBuffer 的性能优于 String 的原因。

点击这里查看详情。

为什么 Java 不支持多重继承?

Java 支持多重继承,但不是通过类,而是通过接口。不支持类多重继承的原因是为了避免由此产生的冲突和复杂性,并保持 Java 是一种简单的面向对象语言。如果我们回想一下 C++ 中的这种情况,存在一个特殊的多重继承情况(菱形问题),即我们有两个方法冲突的类进行多重继承。因此,Java 开发者决定避免此类冲突,根本不允许通过类进行多重继承。

顶层类可以是 private 或 protected 的吗?

Java 中的顶层类不能是 private 或 protected 的,但内部类可以。不将顶层类设为 private 的原因很明显,因为没有人能看到 private 类,因此也就无法使用它。将类声明为 protected 也没有任何意义。默认可见性和 protected 可见性之间的唯一区别在于,我们可以通过继承在任何包中使用它。由于 Java 中没有包继承的概念,因此将类定义为 protected 与默认可见性没有任何区别。

Java 异常处理中 ‘throw‘ 和 ‘throws‘ 有什么区别?

以下是两者之间的区别:

  • throw 关键字用于从任何方法或静态块中抛出异常,而 throws 用于指示该方法可能抛出哪种异常。
  • 如果任何方法抛出已检查异常,那么调用者可以处理该异常(使用 try catch 块),或者可以在方法声明中声明另一个 ‘throws‘ 子句来重新抛出它。
  • throw 子句可以在代码的任何部分使用,只要你觉得需要向调用方法抛出特定的异常。

例如
throw

throw new Exception("You have some exception")

throw new IOException("Connection failed!!")

throws

throws IOException, NullPointerException, ArithmeticException

finalize() 方法是什么?

与 C++ 不同,在 Java 中我们不需要显式地销毁对象。“垃圾回收器”会自动为我们完成这项工作。垃圾回收器会检查对象是否存在引用,如果不存在引用,则假定该对象不再需要,并且可以释放该对象占用的内存。有时对象可能持有非 Java 资源,例如文件句柄或数据库连接,此时我们希望确保在对象被销毁之前也释放这些资源。为了执行此类操作,Java 在 Object 类中提供了 protected void finalize() 方法。我们可以在自己的类中重写此方法并执行所需的任务。在对象被释放之前,Java 运行时会调用该对象的 finalize() 方法。

点击这里了解更多详情。

Set 和 List 的区别

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/49311.html
点赞
0.00 平均评分 (0% 分数) - 0