专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础知识题库

Java基础知识题库

更新时间:2022-05-09 11:20:46 来源:动力节点 浏览1163次

1.列出Java 编程语言的特点。

Java 编程语言有以下特点。

简单: Java 很容易学习。Java 的语法基于 C++,这使得在其中编写程序更容易。

面向对象: Java 遵循面向对象的范式,它允许我们将代码维护为包含数据和行为的不同类型对象的组合。

可移植性: Java 支持随处读取一次写入的方法。我们可以在每台机器上执行 Java 程序。Java 程序 (.java) 被转换为可以在每台机器上轻松运行的字节码 (.class)。

平台无关: Java 是一种平台无关的编程语言。它不同于需要平台执行的其他编程语言,如 C 和 C++。Java 带有执行其代码的平台。Java 不依赖于要执行的操作系统。

安全: Java 是安全的,因为它不使用显式指针。Java 还提供了字节码和异常处理的概念,使其更加安全。

健壮: Java 是一种强大的编程语言,因为它使用强大的内存管理。自动垃圾收集、异常处理等概念使其更加健壮。

架构中立: Java 是架构中立的,因为它不依赖于架构。在 C 中,数据类型的大小可能会根据 Java 中不存在的体系结构(32 位或 64 位)而有所不同。

解释: Java 使用即时 (JIT) 解释器和编译器来执行程序。

高性能: Java 比其他传统的解释型编程语言更快,因为 Java 字节码“接近”本机代码。它仍然比编译语言(例如,C++)慢一点。

多线程:我们可以通过定义多个线程来编写一次处理多个任务的 Java 程序。多线程的主要优点是它不会为每个线程占用内存。它共享一个公共内存区域。线程对于多媒体、Web 应用程序等很重要。

分布式: Java是分布式的,因为它方便用户用Java创建分布式应用程序。RMI 和 EJB 用于创建分布式应用程序。Java 的这一特性使我们能够通过从 Internet 上的任何机器调用方法来访问文件。

动态: Java 是一种动态语言。它支持类的动态加载。这意味着类是按需加载的。它还支持来自其本地语言(即 C 和 C++)的函数。

2.你对Java虚拟机的理解是什么?

Java 虚拟机是使计算机能够运行Java程序的虚拟机。JVM 就像一个运行时引擎,它调用 Java 代码中的 main 方法。JVM是必须在计算机系统中实现的规范。Java 代码由 JVM 编译为与机器无关且接近本机代码的字节码。

3.JVM分配了多少种内存区域?

多种类型:

类(方法)区:类区存储每个类的结构,例如运行时常量池、字段、方法数据和方法代码。

堆:它是运行时数据区,内存被分配给对象

Stack: Java Stack 存储帧。它保存局部变量和部分结果,并在方法调用和返回中发挥作用。每个线程都有一个私有 JVM 堆栈,与线程同时创建。每次调用方法时都会创建一个新框架。框架在其方法调用完成时被销毁。

程序计数器寄存器: PC(程序计数器)寄存器包含当前正在执行的Java虚拟机指令的地址。

本机方法堆栈:它包含应用程序中使用的所有本机方法。

4.Java 平台与其他平台的主要区别是什么?

Java平台与其他平台有以下区别。

Java 是基于软件的平台,而其他平台可能是硬件平台或基于软件的平台。

Java 在其他硬件平台之上执行,而其他平台只能有硬件组件。

5.什么是类加载器?

Classloader 是 JVM 的一个子系统,用于加载类文件。每当我们运行 java 程序时,它首先由类加载器加载。Java中有三个内置的类加载器。

Bootstrap ClassLoader:这是第一个类加载器,它是 Extension 类加载器的超类。它加载包含Java标准版所有类文件的rt.jar文件,如java.lang包类、java.net包类、java.util包类、java.io包类、java.sql包类等。

Extension ClassLoader:这是 Bootstrap 的子类加载器和 System 类加载器的父类加载器。它加载位于$JAVA_HOME/jre/lib/ext目录中的 jar 文件。

System/Application ClassLoader:这是扩展类加载器的子类加载器。它从类路径加载类文件。默认情况下,类路径设置为当前目录。您可以使用“-cp”或“-classpath”开关更改类路径。它也被称为应用程序类加载器。

6.Java中的各种访问说明符是什么?

在 Java 中,访问说明符是用于定义方法、类或变量的访问范围的关键字。在 Java 中,下面给出了四个访问说明符。

公共定义为公共的类、方法或变量可以被任何类或方法访问。

Protected Protected 可以被同一个包的类访问,也可以被这个类的子类访问,也可以在同一个类内访问。

Default Default 只能在包中访问。默认情况下,所有类、方法和变量都具有默认范围。

Private定义为私有的私有类、方法或变量只能在该类中访问。

7.静态方法和变量的目的是什么?

定义为静态的方法或变量在类的所有对象之间共享。静态是类的一部分,而不是对象的一部分。静态变量存储在类区域中,我们不需要创建对象来访问这些变量。因此,在需要定义类的所有对象共有的变量或方法的情况下使用静态。

例如,在模拟学院学生集合的类中,学院名称是所有学生的共同属性。因此,学院名称将被定义为static。

8.Java 中的包有什么优点?

在 Java 中定义包有很多优点。

包避免了名称冲突。

包提供更容易的访问控制。

我们还可以拥有在外部不可见并由包使用的隐藏类。

更容易找到相关的类。

9.什么是面向对象范式?

它是一种基于对象的编程范式,对象具有在其所属的类中定义的数据和方法。面向对象范式旨在结合模块化和可重用性的优点。对象是类的实例,它们相互交互以设计应用程序和程序。面向对象范式有以下特点。

在程序设计中遵循自下而上的方法。

使用对对象数据进行操作的方法来关注数据

包括像封装和抽象这样的概念,它向用户隐藏复杂性并仅显示功能。

实现实时方法,如继承、抽象等。

面向对象范式的示例有 C++、Simula、Smalltalk、Python、C# 等。

10.什么是对象?

对象是具有某种状态和行为的实时实体。在 Java 中,Object 是类的实例,实例变量作为对象的状态,方法作为对象的行为。可以使用new关键字创建类的对象。

11.什么是构造函数?

构造函数可以定义为用于初始化对象状态的特殊类型的方法。当类被实例化时调用它,并为对象分配内存。每次使用new关键字创建对象时,都会调用该类的默认构造函数。构造函数的名称必须与类名相似。构造函数不能有明确的返回类型。

12.什么是静态方法?

静态方法属于类而不是对象。

无需创建对象即可调用静态方法。

静态方法可以访问和更改静态变量的值。

13.应用于 Java 静态方法的限制是什么?

静态方法有两个主要限制。

静态方法不能使用非静态数据成员或直接调用非静态方法。

this 和 super 不能在静态上下文中使用,因为它们是非静态的。

14.为什么 main 方法是静态的?

因为对象不需要调用静态方法。如果我们将 main 方法设为非静态,JVM 将不得不先创建它的对象,然后调用 main() 方法,这将导致额外的内存分配。

15.我们可以将构造函数设为静态吗?

正如我们所知,静态上下文(方法、块或变量)属于类,而不是对象。由于仅在创建对象时才调用构造函数,因此将构造函数设为静态是没有意义的。但是,如果您尝试这样做,编译器将显示编译器错误。

16.我们可以在 Java 中使抽象方法成为静态的吗?

在Java中,如果我们将抽象方法设为静态,它将成为类的一部分,我们可以直接调用它,这是不必要的。调用未定义的方法是完全没有用的,因此是不允许的。

17.这个关键字的主要用途是什么?

此关键字有以下用途。

this可用于引用当前类实例变量。

this可用于调用当前类方法(隐式)

this()可用于调用当前类的构造函数。

这可以作为方法调用中的参数传递。

this可以在构造函数调用中作为参数传递。

this可用于从方法返回当前类实例。

18.为什么在 Java 中使用继承?

下面给出了在 Java 中使用继承的各种优点。

继承提供代码可重用性。派生类不需要重新定义基类的方法,除非它需要提供方法的具体实现。

不使用继承就无法实现运行时多态性。

我们可以使用实时对象模拟类的继承,这使得 OOP 更加真实。

继承提供数据隐藏。基类可以通过将其设为私有来隐藏派生类的一些数据。

没有继承就无法实现方法覆盖。通过方法覆盖,我们可以给出基类包含的一些基本方法的具体实现。

19.super 关键字的主要用途是什么?

super关键字有以下用途。

super 可用于引用直接父类实例变量。

super 可用于调用直接父类方法。

super() 可用于调用直接父类构造函数。

20.this 和 super 关键字有什么区别?

this 和 super 关键字有以下区别。

super 关键字始终指向父类上下文,而 this 关键字始终指向当前类上下文。

super 关键字主要用于在派生类构造函数中初始化基类变量,而 this 关键字主要用于在传入类构造函数时区分局部变量和实例变量。

super 和 this 必须是构造函数中的第一条语句,否则编译器会抛出错误。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>