JavaRush /Java 博客 /Random-ZH /喝咖啡休息#101。19 个基本 Java 面试问题和简短示例答案

喝咖啡休息#101。19 个基本 Java 面试问题和简短示例答案

已在 Random-ZH 群组中发布
来源:Hackernoon 以下是 Java 面试中经常出现的一些问题和答案。

1.什么是Java开发工具包(JDK)?

JDK 是一个软件开发工具包,其中包括开发 Java 应用程序所需的工具和库。

2. Java运行时环境(JRE)的作用是什么?

JRE是指Java字节码运行的运行时环境。JRE 维护运行时的文件和库。

3. Java虚拟机(JVM)的作用是什么?

JVM 是一个抽象机器,它提供了 Java 字节码可以执行的运行时环境。

4. Java 是平台无关的。为什么?

在任何其他编程语言中,源代码被编译为可执行代码,并且该代码可能无法在所有平台上运行。通过使用 JVM,我们可以使任何平台都可以理解字节码,并且该字节码是独立于平台的。尽管每个平台的 JVM 都不同,但 Java 是平台无关的,因为它不依赖于任何类型的平台。

5. Java不是100%面向对象的。为什么?

因为Java使用boolean、byte、char、int、float、double、long、short等八种基本数据类型,它们不是对象。

6. Java中的构造函数是什么?

构造函数是用于初始化对象的代码块。句法:
class DemoClass
{
   // constructor name is same as class name
   DemoClass()
   {
      ....
   }
}
// calls DemoClass() constructor
DemoClass obj = new DemoClass();
例子:
public class ConstructorDemo
{
   int a; // class attribute
   // create constructor for class ConstructorDemo
   ConstructorDemo()
   {
      a = 26; // initial value for class attribute 'a'
   }
   public static void main(String[] args)
   {
      // creating object for ConstructorDemo class
      // here we're calling constructor ConstructorDemo()
      ConstructorDemo obj = new ConstructorDemo();
      System.out.println(obj.a);
   }
}
结果:
26

7. 单例类有什么作用?

单例类一次只能有一个对象(类实例)。创建对象并尝试实例化单例类后,新变量也指向创建的第一个对象。

8. Java中的包装类是什么?

包装类允许将原始数据类型转换为对象,反之亦然。例子:
int a = 7; // using primitive datatype
Integer a = new Integer(7); // using wrapper class

9. Java中的==运算符和相等方法有什么区别?

一般来说,==是一个运算符,equals()是一个方法。我们使用==运算符来引用堆上的比较对象。Java中没有运算符重载的概念。尽管如此,==运算符还是用来检查两个对象的地址是否相同。也就是说,==运算符检查两个对象是否指向同一内存位置。==运算符还用于比较对象类型和基本类型(例如布尔值)。而String类的equals()方法则比较两个对象的内容。

10. Java中OOP的概念是什么?

  • 抽象被定义为隐藏内部实现并仅显示必要的信息。
  • 继承是将父类(超类)的所有属性和行为转换为子类(子类)的过程。
  • 封装是将数据或变量和方法绑定在一起的过程。
  • 多态性字面上的意思是多种形式。多态性是方法执行不同任务的能力。这可以通过使用方法来实现。

11. 为什么Java中main()方法总是静态的?

因为不需要调用对象的静态方法。如果main()是一个非静态方法,Java 虚拟机必须首先创建其对象,然后调用main()方法,这将导致分配额外的内存。

12.为什么Java中的字符串是不可变的?

Java中的字符串是不可变的,因为String对象被缓存在字符串常量池中

13. Java中的数组和ArrayList是什么?

数组是包含固定数量的相似类型元素的对象。
  1. ArrayList是集合结构的一部分。

  2. ArrayList实现了列表接口。

  3. ArrayList是一个可扩展的数组,它会随着元素的添加而动态增长,并随着元素的删除而收缩。

  4. 对于频繁的检索操作,Java ArrayList是最好的选择。因为ArrayList的元素存储在连续的内存位置中。

  5. ArrayList不能包含原始数据类型,例如 int、double、char 和 long。

  6. ArrayList可以包含String和包装类对象(DoubleInteger)。

  7. ArrayList允许您复制元素。

  8. ArrayList保留插入顺序。

  9. ArrayList因其功能性和灵活性而被广泛使用。它旨在存储异构对象集合。

  10. ArrayList可以有任意数量的空值。

14、Java中HashSet和HashMap有什么区别?

哈希集中
  1. 我们可以将对象存储在HashSet中。例如,HashSet:{“Hello”,“World”}

  2. 不保留插入顺序。它是基于哈希码的。

  3. 有一个add()方法。

  4. 实现Set接口。

  5. 不允许重复元素。

  6. 允许单个空值。

哈希映射中:
  1. HashMap中我们可以存储键和值对。例如,{1 -> “Hello”, 2 -> “World”}

  2. 不支持插入顺序。它基于哈希函数。

  3. 有一个put()方法。

  4. 实现地图接口。

  5. 允许重复值。不允许重复的键。

  6. 允许单个空键和任意数量的空值。

16.Java中this和super有什么区别?

Java中的this关键字:
  1. 是一个关键字,它是引用当前对象的引用变量。

  2. 可用于隐式调用当前类方法。

  3. this()关键字,用于调用当前类的构造函数。

  4. 这可用于在调用方法时作为参数传递。

Java中的super关键字:
  1. super关键字是一个引用变量,用于引用父类的直接对象。

  2. super可用于直接调用父类的方法、父类的构造函数以及访问基类的方法。

17. Java中的break和continue语句是什么?

如果循环中出现break语句,循环将结束,控制权将传递到同一循环中的下一条语句。例子:
public class Example
{
   public static void main(String[] args)
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a == 3)
         {
            // breaking loop
            break;
         }
         System.out.println(a);
      }
   }
}
结果:
12
continue 语句根据特定条件移动到循环的下一次迭代。例子:
public class Example
{
   public static void main(String[] args)
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a % 2 != 0)
         {
            continue;
         }
         System.out.println(a + " ");
      }
   }
}
结果:
2 4 6 8 10

18. Java中的访问修饰符是什么?

访问修饰符定义变量、构造函数、类或方法的限制或范围。Java中有四种类型的访问修饰符:
  1. 私有访问修饰符。
  2. 受保护的访问修饰符。
  3. 共享修改器。
  4. 默认访问修饰符。

19. Java中for循环和foreach循环有什么区别?

for循环:
  1. 没有可执行序列。在for循环中,我们可以根据需要更改计数器。
  2. 一开始就出现在 JDK 1 中。
  3. 无需实现该接口。
  4. 可以访问索引。因此,可以替换数组中的元素。
  5. 计数器可以增加和减少。
对于每个循环:
  1. 依次执行。计数器加一。
  2. 首次出现在 JDK 5 中。
  3. 要使用 for-each 循环迭代容器,容器必须实现 Iterable 接口。
  4. 由于无法访问数组索引,因此无法替换该索引处的元素。
  5. 只能按递增顺序迭代,不能递减。
foreachfor循环之间的区别示例:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DifferenceBetween
{
   public static void main(String[] args)
   {
      List<String> players = new ArrayList<>(Arrays.asList("Virat", "Rohit", "Dhoni"));
      // iterate over List using for loop
      System.out.println("using for loop: ");
      for(int a = 0; a < players.size(); a++)
      {
         System.out.println(players.get(a));
      }
      // iterate over List using enhanced for loop
      System.out.println("using for each loop: ");
      for(String str : players)
      {
         System.out.println(str);
      }
   }
}
for 和 foreach 循环的结果:
维拉特·罗希特·多尼。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION