Java面试题-01

 

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

    • java虚拟机:一个可以运行Java字节码文件的虚拟机进程;

    • Java是一门与平台无关的编程语言:Java源程序经过javac编译器(在JDK中)生成java 字节码文件,JVM在将该字节码文件编译成当前操作系统可以识别的二进制代码,由此该二进制代码可以运行在操作系统上。所以在我们看来,JVM屏蔽了不同操作系统之间的差异,不同操作系统上安装的JVM也不相同,JVM针对不同的操作系统将Java字节码文件翻译成不同的二进制,因此Java语言的跨平台(操作系统)实际上指的是Java字节码的跨平台,即同一套字节码文件经过JVM的相关处理可以运行在不同的操作系统上。

  2. JDK和JRE的区别?

    • JDK:java development kit ---->Java开发工具包:

      • Java程序开发人员使用,JDK中包含了JVM,Java开发需要用到的一些基础类库,以及其它工具。

    • JRE:Java Runtime Environment ---->Java运行时环境。

      • 需要运行Java程序的人使用,可以没有Java源代码,只需字节码文件就可以运行。

    • 区别:综上,JDK包括了JRE和JVM,而JRE中又包括了JVM

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

    • static 关键字表名一个成员变量/成员方法可以在其所属类没有实例化的情况下被访问,因为被它修饰的成员在类加载的时候就已经被静态绑定了。

    • 被private关键字修饰的成员(变量/方法)无法被子类继承,因此也就不存在子类重写父类私有方法这一说法.

    • java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。

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

    • 不可以在static环境中访问非static变量。所有static成员都属于类中的成员,所有非static成员属于对象中的成员。类加载的时候会将这些static成员加载到静态方法区内存中,而在类加载阶段,不一定有实例对象被创建,因此非static成员不可以在static环境下访问,也就是在类加载阶段,不可以访问非静态成员。

  5. Java支持的数据类型有哪些?什么是自动拆装箱?

    • 基本数据类型:byte short int long float double boolean char

    • 引用数据类型:字符串类型,自定义类类型,数组,集合(接口)

    • 自动装箱和拆箱:Java编译器在基本数据类型和其对应的引用类型之间的转换。

      • Int---->Integer 自动装箱

      • Integer---->自动拆箱

  6. Java中的方法覆盖(Overriding)和方法重载(Overload)是什么意思?

    • 方法覆盖:同一个类中有多个同名的方法,实现相似但不同的功能。其它类在调用该方法时只需传递不同的参数就可以实现不同的功能。

    • 构成条件:

      • 同一个类下

      • 方法名相同,参数列表不同。

      • 与返回值类型和访问权限无关

    • 方法重载:子类继承父类中的成员(成员变量和成员方法)并对其进行重写。父类中的成员由此被隐藏。

    • 构成条件:

      • 存在父子类继承关系

      • 子类重写后的方法和父类中的方法必须完全一致(返回值类型,方法名,参数列表)。除外访问修饰权限可以不同,子类重写后可以更高,不可以更低。

posted @ 2021-11-07 10:43  安妍  阅读(44)  评论(0)    收藏  举报