2026最新Java面试汇总(小白学习指南)

1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

答:Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如 处理器、堆栈 、寄存器等,还具有相应的指令系统。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码字节码),就可以在多种平台上不加修改地运行。


2. JDK和JRE的区别是什么?

答:Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。


3. ”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

答: “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。static还可以用于修饰内部类(静态内部类),还可以用在import中,可以直接使用某个类的静态属性而不需要类名。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。


4. 是否可以在static环境中访问非static变量?

答:static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。


5. 从继承的角度看,将构造函数声明为私有会有何作用?

答:将构造函数声明为私有(private),可以确保类以外的地方都不能直接实例化这个类。在这种情况下,要创建这个类的实例,唯一的办法是提供一个公共静态方法,就像工厂方法模式那样。
此外,由于构造函数是私有的,因此这个类也不能被继承。


6. 在Java中,若在try-catch-finally的try语句块中插入return语句,finally语句块是否会执行?

*答:会执行。当退出try语句块时,finally语句块将执行。即使我们试图从try语句块里跳出(通过return语句、continue语句、break语句或任意异常语句),finally语句块仍将得以执行。
*

注意:有些情况下finally语句块将不会执行,比如:

  • 如果虚拟机在try/catch语句块执行期间退出;
  • 如果执行try/catch语句块的线程被杀死终止了。

7. final、finally、finalize之间有何差异?

答:非常笼统的讲,final用于控制变量、方法或类是否“可更改”;finally关键字用在try/catch语句块中,以确保一段代码一定会执行。一旦垃圾收集器确定没有任何引用指向某个对象,就会在销毁这个对象之前调用finalize()方法。下面是关于几个关键字和方法的更多细节:
① final
上下文不同,final有不同的含义。

  • 应用于基本类型(primitive)变量时:该变量的值无法更改。
  • 应用于引用(reference)变量时:该引用变量不能指向堆上的其他任何对象。
  • 应用于方法时:该方法不允许重写。
  • 应用于类时:该类不能派生子类。

② finally
在try块或者catch块之后,可以选择加一个finally语句块,finally语句块里的语句一定会被执行(除非java虚拟机在执行try语句块时退出)。我们会在finally语句块这里编写资源回收和清理的代码。

③finalize()
当垃圾收集器确定再无任何引用指向某个对象实例时,就会在销毁对象之前调用finalize()方法,一般用于资源清理或者关闭文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值