超过100+ Java 面试问题与答案(2025)

这里有 Java 为应届毕业生和有经验的求职者提供面试问题和答案,帮助他们获得理想的工作。

 

Java 面向初学者的编程面试问题和答案

1)内部类和子类有什么区别?

内部类是嵌套在另一个类中的类。内部类对嵌套它的类具有访问权限,并且可以访问外部类中定义的所有变量和方法。

子类是从另一个类(称为超类)继承的类。子类可以访问其超类的所有公共和受保护的方法和字段。

👉免费PDF下载: Java 面试 面试问题与答案 >>


2)各种访问说明符的含义是什么 Java 类?

In Java,访问说明符是类名前用来定义访问范围的关键字。类的访问说明符类型有:

1) 公众: Class、Method、Field 可以从任何地方访问。

2)受保护: Method,Field 可以从其所属的类或者其子类中访问,也可以从同一个包的类中访问,但不能从外部访问。

3) 默认: 方法、字段、类只能从同一个包中访问,而不能从其本机包之外访问。

4) 私人: 方法和字段可以从它们所属的同一类中访问。


3)静态方法和静态变量的用途是什么?

当需要在类的多个对象之间共享方法或变量,而不是为每个对象创建单独的副本时,我们使用 static 关键字使所有对象共享方法或变量。


4)什么是数据封装,其意义是什么?

封装是面向对象编程中的一个概念,用于将属性和方法结合在一个单元中。

封装有助于程序员遵循模块化方法进行软件开发,因为每个对象都有自己的一组方法和变量,并且独立于其他对象提供其功能。封装还具有数据隐藏目的。


5)什么是单例类?给出一个其用法的实际例子。

Java 中的单例类只能有一个实例,因此其所有方法和变量都只属于一个实例。单例类概念在需要限制类的对象数量的情况下很有用。

单例使用场景的最佳示例是,由于某些驱动程序限制或任何许可问题,与数据库的连接受到限制。


6)什么是循环 Java? 循环有哪三种类型?

循环用于编程中重复执行一条语句或一个语句块。循环有三种 循环类型 Java:

1)For循环

在 Java 中,For 循环用于按给定次数重复执行语句。当程序员知道执行语句的次数时,就会使用 For 循环。

2)While 循环

当需要重复执行某些语句直到满足条件时,使用 While 循环。在 while 循环中,在执行语句之前先检查条件。

3)执行 While 循环

Do While 循环与 While 循环相同,唯一的区别是执行语句块后检查条件。因此,在 do while 循环的情况下,语句至少执行一次。


7) 什么是无限循环?如何声明无限循环?

无限循环在没有任何条件的情况下运行,并且会无限运行。可以通过在语句块主体中定义任何中断逻辑来中断无限循环。

无限循环声明如下:

for (;;)
{
    // Statements to execute

    // Add any loop breaking logic
}

8)continue 和 break 语句有什么区别?

break 和 continue 是循环中使用的两个重要关键字。当在循环中使用 break 关键字时,循环会立即中断,而当使用 continue 关键字时,当前迭代会中断,循环将继续进行下一次迭代。

在下面的例子中,当计数器达到 4 时循环中断。

for (counter = 0; counter & lt; 10; counter++)
    system.out.println(counter);

if (counter == 4) {

    break;
}

}

在下面的例子中,当计数器达到 4 时,循环跳转到下一次迭代,并且当前迭代中 continue 关键字之后的任何语句都将被跳过。

for (counter = 0; counter < 10; counter++)
    system.out.println(counter);

if (counter == 4) {

    continue;
}
system.out.println("This will not get printed when counter is 4");
}

9) double 和 float 变量有什么区别? Java?

在Java中,浮点数在内存中占用4个字节,而 Double 占用 8 个字节内存。Float 是单精度浮点十进制数,而 Double 是双精度十进制数。


10)什么是 final 关键字 Java? 举个例子。

在 java 中,常量使用关键字 Final 声明。值只能赋值一次,赋值后常量的值不能改变。

在下面的例子中,声明了一个名为 const_val 的常量并赋予了一个值:

私有最终 int const_val=100

当一个方法被声明为 final 时,它不能被子类覆盖。这种方法比任何其他方法都快,因为它们在编译时被解析。

当一个类被声明为 final 时,它不能被子类化。例如 String、Integer 和其他包装类。


11)什么是三元运算符?请举一个例子。

三元运算符,也称为条件运算符,用于根据布尔值评估决定将哪个值分配给变量。它表示为?

在下面的例子中,如果等级为 1,则状态被分配值“完成”,否则为“待定”。

public class conditionTest {
    public static void main(String args[]) {
        String status;
        int rank = 3;
        status = (rank == 1) ? "Done" : "Pending";
        System.out.println(status);
    }
}

12)如何在 Java?

  • 使用 Math.random() 可以生成大于或等于 0.1 且小于 1.0 范围内的随机数
  • 使用 java.util 包中的 Random 类

13)什么是默认 switch case?请举例说明。

在一个 开关语句,当没有其他 switch 条件匹配时,将执行默认 case。默认 case 是可选 case。只有在所有其他 switch case 都已编码后才能声明它。

在下面的例子中,当分数不是 1 或 2 时,使用默认情况。

public class SwitchExample {
    public static void main(String args[]) {
        int score = 4; // Declare the score variable inside the main method
        switch (score) {
            case 1:
                System.out.println("Score is 1");
                break;
            case 2:
                System.out.println("Score is 2");
                break;
            default:
                System.out.println("Default Case");
        }
    }
}

14)什么是基类 Java 所有的类都是从中派生出来的?

java.lang.object


15)main()方法是否可以在 Java 可以返回任何数据吗?

在 java 中,main() 方法不能返回任何数据,因此,它总是被声明为 void 返回类型。


16)什么是 Java 包裹?包裹有什么意义?

In Java包是类和接口的集合,它们彼此相关,因此被捆绑在一起。使用包可以帮助开发人员模块化代码并对代码进行分组,以便适当地重复使用。一旦代码被打包到包中,就可以将其导入到其他类中并使用。


17) 我们可以将一个类声明为抽象类而没有任何抽象方法吗?

是的,我们可以通过在类名前使用 abstract 关键字来创建抽象类,即使它没有任何抽象方法。但是,如果一个类有一个抽象方法,则必须将其声明为抽象的,否则会出错。


18)抽象类和接口有什么区别? Java?

抽象类和接口之间的主要区别在于,接口只能拥有公共静态方法的声明而没有具体实现,而抽象类可以拥有具有任何访问说明符(公共、私有等)的成员,无论是否有具体实现。

使用抽象类和接口的另一个主要区别是,实现接口的类必须实现接口的所有方法,而从抽象类继承的类不需要实现其超类的所有方法。

一个类可以实现多个接口,但只能扩展一个抽象类。


19)与抽象类相比,接口对性能有何影响?

与抽象类相比,接口的性能较慢,因为接口需要额外的间接访问。开发人员需要考虑的另一个关键因素是,任何类只能扩展一个抽象类,而一个类可以实现多个接口。

使用接口也会给开发人员带来额外的负担,因为任何时候在类中实现接口时,开发人员都必须实现接口的每个方法。


20)导入一个包时是否也会导入其子包 Java?

在 java 中,当导入一个包时,它的子包不会被导入,如果需要,开发人员需要单独导入它们。

例如,如果开发人员导入了 university.* 包,则 university 包中的所有类都会被加载,但子包中的类不会被加载。要加载其子包(例如部门)中的类,开发人员必须按如下方式显式导入它:

导入大学.部门.*


21) 我们可以将类的主要方法声明为私有的吗?

在 Java 中,main 方法必须是 public static 才能正确运行任何应用程序。如果将 main 方法声明为 private,开发人员不会收到任何编译错误,但是它将不会被执行并会出现运行时错误。


22) 我们如何通过引用而不是通过值传递参数给函数?

在 java 中,我们只能通过值而不是引用将参数传递给函数。


23) Java 中如何序列化对象?

在 Java 中,为了通过序列化将对象转换为字节流,类需要实现名为 Serializable 的接口。实现可序列化接口的类的所有对象都会被序列化,并且它们的状态会保存在字节流中。


24)什么时候应该使用序列化?

当数据需要通过网络传输时,使用序列化。使用序列化,对象的状态被保存并转换为字节流。字节流通过网络传输,并在目的地重新创建对象。


25)在 Catch 块中,Try 块后面是否必须跟有 Catch 块? Java 用于异常处理?

Try 块后面必须跟有 Catch 块或 Finally 块,或者两者皆有。try 块抛出的任何异常都必须在 catch 块中捕获,否则,代码中止前要执行的任何特定任务都必须放在 Finally 块中。


Java 经验丰富的面试问题和答案

26) 即使在异常块中发生了一些异常,有没有办法跳过异常的 Finally 块?

如果在 Try 块中引发异常,则控制权将传递给 catch 块(如果存在),否则将传递给 finally 块。发生异常时始终会执行 Finally 块,避免执行 Finally 块中任何语句的唯一方法是通过在 try 块末尾写入以下代码行强制中止代码:

System.exit(0);

27) 何时调用类的构造函数?

每次使用 new 关键字创建对象时都会调用类的构造函数。

例如,在下面的类中使用 new 关键字创建了两个对象,因此构造函数被调用两次。

public class const_example {

    const_example() {

        system.out.println("Inside constructor");
    }
    public static void main(String args[]) {

        const_example c1 = new const_example();

        const_example c2 = new const_example();
    }
}

28) 一个类可以有多个构造函数吗?

是的,一个类可以有多个具有不同参数的构造函数。使用哪个构造函数来创建对象取决于创建对象时传递的参数。


29) 我们可以重写类的静态方法吗?

我们不能覆盖静态方法。静态方法属于类,而不是单个对象,并且在编译时(而不是运行时)解析。即使我们尝试覆盖静态方法,也不会出现编译错误,也不会在运行代码时受到覆盖的影响。


30)在下面的例子中,输出是什么?

public class superclass {

    public void displayResult() {

        system.out.println("Printing from superclass");

    }

}

public class subclass extends superclass {

    public void displayResult() {

        system.out.println("Displaying from subClass");

        super.displayResult();

    }

    public static void main(String args[]) {

        subclass obj = new subclass();

        obj.displayResult();

    }

}

:输出将是:

从子类显示

从超类打印


31)String 是 Java 中的数据类型吗?

String 不是 Java 中的原始数据类型。在 Java 中创建字符串时,它实际上是 Java.Lang.String 类被创建。创建此字符串对象后,String 类的所有内置方法都可以在该字符串对象上使用。


32)在下面的例子中,创建了多少个字符串对象?

String s1="I am Java Expert";

String s2="I am C Expert";

String s3="I am Java Expert";

在上面的例子中,两个对象 Java.Lang.String 类被创建。s1 和 s3 是对同一对象的引用。


33)为什么字符串 Java 被称为不可变的?

在 Java 中,字符串对象被称为不可变的,因为一旦将值分配给字符串,就无法更改,如果更改,则会创建一个新的对象。

在下面的例子中,引用 str 指的是具有值“Value one”的字符串对象。

String str="Value One";

当为其分配新值时,将创建一个新的 String 对象,并且引用将移动到新对象。

str="New Value";

34)数组和向量有什么区别?

数组将相同原始类型的数据分组,本质上是静态的,而向量本质上是动态的,可以保存不同数据类型的数据。


35)什么是多线程?

多线程是一种编程概念,用于在单个程序中以并发方式运行多个任务。线程共享相同的进程堆栈并并行运行。它有助于提高任何程序的性能。


36)为什么使用 Runnable 接口 Java?

Runnable 接口在 Java 中用于实现多线程应用程序。 Java.Lang.Runnable 接口由类实现,以支持多线程。


37)在 .NET Framework 中实现多线程的两种方法是什么? Java?

多线程应用程序可以开发在 Java 通过使用以下两种方法中的任一种:

1)通过使用 Java.Lang.Runnable 接口。类实现此接口以启用多线程。此接口中有一个 Run() 方法,已实现。

2)通过编写一个扩展类 Java.Lang.Thread 类。


38)当需要对数据进行大量更改时,应该优先使用哪一个?String 还是 StringBuffer?

自字符串Buffer本质上是动态的,我们可以改变 String 的值Buffer 对象与不可变的 String 不同,使用 String 总是一个不错的选择Buffer 当数据更改过多时。如果我们在这种情况下使用 String,则每次数据更改都会创建一个新的 String 对象,这将是额外的开销。


39)在 Switch 语句的各个 case 中使用 Break 的目的是什么?

在 switch 中的每个 case(最后一个 case 除外)之后都使用 break,这样代码就会在有效 case 之后中断,并且不会在后续 case 中流动。

如果每个 case 之后没有使用 break,则有效 case 之后的所有 case 也将被执行,从而导致错误的结果。


40)垃圾收集是如何进行的 Java?

在Java中,当一个对象不再被引用时, 垃圾收集 发生并且对象被自动销毁。对于自动垃圾收集,java 调用 System.gc() 方法或 Runtime.gc() 方法。


41) 如何在 main 方法之前执行任何代码?

如果我们想在类加载时甚至在创建对象之前执行任何语句,我们可以在类中使用静态代码块。此静态代码块内的任何语句都将在加载类时甚至在主方法中创建对象之前执行一次。


42) 一个类可以同时是超类和子类吗?请举例说明。

如果使用了继承层次结构,则一个类可以同时成为另一个类的超类和另一个类的子类。

在下面的例子中,大陆类是世界类的子类,并且是国家类的超类。

public class world {

..........

}
public class continenet extends world {

............

}
public class country extends continent {

......................

}

43) 如果类中没有定义构造函数,如何创建类的对象?

即使 Java 类中没有定义显式构造函数,对象也会成功创建,因为默认构造函数会隐式用于创建对象。此构造函数没有参数。


44) 在多线程中,我们如何确保资源不会被多个线程同时使用?

在多线程中,可以使用同步的概念来控制对多个线程之间共享的资源的访问。使用 synchronized 关键字,我们可以确保一次只有一个线程可以使用共享资源,并且只有在其他线程释放该资源后,其他线程才能获得对该资源的控制权。


45) 我们可以对一个对象多次调用该类的构造函数吗?

当我们使用 new 关键字创建对象时,构造函数会自动调用。在创建对象时,它只会为对象调用一次,因此,在创建对象后,我们不能再次调用构造函数。


46) 有两个类,分别为 classA 和 classB。两个类都在同一个包中。classA 的私有成员可以被 classB 的对象访问吗?

类的私有成员在该类的范围之外不可访问,并且即使在同一个包中的任何其他类也不能访问它们。


47) 一个类中可以有两个同名的方法吗?

我们可以在一个类中定义两个具有相同名称但参数数量/类型的方法。调用哪个方法将取决于传递的参数。

例如,在下面的类中,我们有两个同名但参数不同的打印方法。根据参数,将调用适当的方法:

public class methodExample {

    public void print() {

        system.out.println("Print method without parameters.");

    }

    public void print(String name) {

        system.out.println("Print method with parameter");

    }

    public static void main(String args[]) {

        methodExample obj1 = new methodExample();

        obj1.print();

        obj1.print("xx");

    }

}

48) 如何复制 java 对象?

我们可以使用克隆的概念来创建对象的副本。使用克隆,我们可以创建具有对象实际状态的副本。

Clone() 是 Cloneable 接口的一种方法,因此,需要实现 Cloneable 接口才能制作对象副本。


49)使用继承有什么好处?

使用继承的主要好处是代码的可重用性,因为继承允许子类重用其超类的代码。多态性(可扩展性)是另一个巨大的好处,它允许引入新功能而不影响现有的派生类。


50) 类的变量和方法的默认访问说明符是什么?

变量和方法的默认访问说明符是包保护的,即变量和类可供同一包中的任何其他类使用,而不是包外的。


51)给出一个使用指针的例子 Java 类。

没有指针 Java. 因此我们不能在 Java.


52) 如何限制一个类的继承,使得没有类能够从它继承?

如果我们希望某个类不再被任何类进一步扩展,我们可以使用关键字 最终的 使用班级名称。

在以下示例中,Stone 类是 Final 类,无法扩展

public Final Class Stone {
	// Class methods and Variables
}

53)受保护访问说明符的访问范围是什么?

当使用 Protected 访问说明符声明方法或变量时,它可以在同一类、同一包的任何其他类以及子类中访问。

修改 增益级 小包装 子类 世界
国家 Y Y Y Y
保护 Y Y Y N
无修饰符 Y Y N N
私立 Y N N N

54)堆栈和队列有什么区别?

堆栈和队列都用作数据集合的占位符。堆栈和队列之间的主要区别在于堆栈基于后进先出 (LIFO) 原则,而队列基于​​ FIFO(先进先出)原则。


55) 在 java 中,我们如何禁止变量序列化?

如果我们希望某个类的某些变量不被序列化,我们可以使用关键字 短暂的 在声明它们时。例如,下面的变量 trans_var 是一个瞬态变量,不能被序列化:

public class transientExample { 
	private transient trans_var; 
    // rest of the code 
}

56)如何使用原始数据类型作为对象?

像 int 这样的原始数据类型可以通过使用其各自的包装类作为对象来处理。例如,Integer 是原始数据类型 int 的包装类。我们可以将不同的方法应用于包装类,就像任何其他对象一样。


57) 编译时捕获哪些类型的异常?

检查异常可以在程序编译时捕获。必须使用代码中的 try catch 块处理检查异常才能成功编译代码。


58)描述线程的不同状态。

线程 Java 可以处于以下任一状态:

  • 就绪:当一个线程被创建时,它处于就绪状态。
  • 运行:当前正在执行的线程处于运行状态。
  • 等待:等待另一个线程释放某些资源的线程处于等待状态。
  • 死亡:执行完之后就死亡的线程处于死亡状态。

59) 即使定义了显式构造函数,我们可以使用类的默认构造函数吗?

Java 如果没有显式定义构造函数,则提供默认的无参数构造函数 Java 类。但是,如果已经定义了显式构造函数,则无法调用默认构造函数,并且开发人员只能使用类中定义的构造函数。


60) 我们可以使用相同的方法名称和参数但不同的返回类型来覆盖方法吗?

方法重写的基本条件是方法名称、参数以及返回类型必须与被重写的方法完全相同。因此使用不同的返回类型不会重写方法。


61)下面这段代码的输出是什么?

public class operatorExample {

    public static void main(String args[]) {

        int x = 4;

        system.out.println(x++);
	}
}

在这种情况下,使用后缀 ++ 运算符,它首先返回值,然后递增。因此,它的输出将为 4。


61) 有人说他成功编译了一个 Java 类,但其中甚至没有 main 方法?这可能吗?

main 方法是 Java 类,并且是程序执行所必需的;即使类没有 main 方法,它也能成功编译。但它不能运行。


62) 我们可以从静态方法内部调用非静态方法吗?

非静态方法由类的对象拥有,具有对象级作用域,为了从静态块(如从静态主方法)调用非静态方法,需要先创建该类的对象。然后使用对象引用,即可调用这些方法。


63)为了运行任何程序,必须设置哪两个环境变量? Java 程式?

Java 只有在正确设置以下两个环境变量后,程序才能在机器中执行:

  1. 路径变量
  2. CLASSPATH 变量

64)变量可以在 Java 没有初始化?

In Java如果在代码中使用变量时没有事先用有效值初始化,程序将无法编译并给出错误,因为没有为变量分配默认值 Java.


65)可以上一堂课吗 Java 可以从多个类继承吗?

In Java,一个类只能从一个类派生,而不能从多个类派生。不支持多重继承 Java.


66)构造函数可以和类名有不同的名字吗? Java?

构造函数 Java 必须与类名同名,如果名称不同,它就不能充当构造函数,编译器会将其视为普通方法。


67) Round(3.7) 和 Ceil(3.7) 的输出是什么?

Round(3.7) 返回 4,Ceil(3.7) 返回 4。


68)我们能在 Java 去特定的一条线路?

In Java,没有 goto 关键字,并且 java 不支持转到特定标记行这一功能。


69)死亡的线程可以再次启动吗?

在 Java 中,处于死亡状态的线程无法再次启动。没有办法重新启动死亡线程。


70) 以下类声明正确吗?

public abstract final class testClass {
	// Class methods and variables
}

答:上述类声明不正确,因为抽象类不能声明为 Final。


71) 每台机器都需要 JDK 来运行 Java 程序?

JDK 是 Java 并且仅用于开发和运行 Java 程序在机器上运行时不需要 JDK,只需要 JRE。


72) equals 方法和 == 运算符的比较有什么区别?

In Java,equals() 方法用于比较两个字符串对象的内容,如果两个对象具有相同的值,则返回 true ,而 == 运算符比较两个字符串对象的引用。

在以下示例中,equals() 返回 true,因为两个字符串对象具有相同的值。但是 == 运算符返回 false,因为两个字符串对象引用不同的对象:

public class equalsTest {

    public static void main(String args[]) {

        String str1 = new String("Hello World");

        String str2 = new String("Hello World");

        if (str1.equals(str2))

        { // this condition is true

            System.out.println("str1 and str2 are equal in terms of values");

        }

        if (str1 == str2) {

            //This condition is true

            System.out.println("Both strings are referencing same object");

        } else

        {

            // This condition is NOT true

            System.out.println("Both strings are referencing different objects");

        }

    }

}

73)是否可以在 Java 类,但在另一种语言(例如 C)的代码中提供它的实现?

是的,我们可以通过使用本机方法来实现这一点。在基于本机方法的开发中,我们在自己的 Java 类没有它的实现,然后用另一种语言(如 C)单独实现。


74)析构函数在 Java?

In Java,类中没有定义析构函数,因为没有必要这样做。 Java 有自己的垃圾收集机制,当对象不再被引用时,它会通过销毁对象来自动完成工作。


Java 5 年以上经验的面试问题和答案

75)一个变量可以同时是局部变量和静态变量吗?

变量不能同时是静态变量和局部变量。将局部变量定义为静态变量会导致编译错误。


76)我们可以在接口中使用静态方法吗?

静态方法不能在任何类中被覆盖,而接口中的任何方法默认都是抽象的,应该在实现接口的类中实现。因此,在接口中使用静态方法是没有意义的 Java.


77) 在实现接口的类中,我们可以改变接口中定义的任何变量的值吗?

不,我们不能改变实现类中接口的任何变量的值,因为接口中定义的所有变量默认都是公共的、静态的和最终的,而最终变量就像常量一样,以后不能改变。


78)以下说法正确吗?由于垃圾收集功能 Java那么,Java 程序永远不会出现内存不足的情况吗?

尽管自动垃圾收集功能由 Java,它不能确保 Java 程序不会出现内存不足的情况,因为有可能创建 Java 与垃圾收集相比,对象的处理速度更快,从而导致所有可用内存资源被填满。

因此,垃圾收集有助于减少程序内存不足的可能性,但并不能确保这一点。


79) 除了 void 之外,main 方法还可以有其他返回类型吗?

不困难, Java 类 main 方法只能具有 void 返回类型,程序才能成功执行。

尽管如此,如果您必须在主方法完成时返回一个值,则可以使用 System.exit(int status)


80) 我想在对象被垃圾回收后重新访问并使用它。这怎么可能?

一旦对象被垃圾收集器销毁,它就不再存在于堆中,并且无法再次访问。没有办法再次引用它。


81)在 Java 线程编程,哪种方法是所有线程必须实现的?

Run() 是 Runnable 接口的方法,所有线程都必须实现该方法。


82) 我想在程序中控制数据库连接,并且希望每次只有一个线程能够建立数据库连接。我该如何实现这个逻辑?

答案:这可以通过使用同步的概念来实现。数据库相关代码可以放在一个方法中,该方法 同步 关键字,以便每次只有一个线程可以访问它。


83)程序员如何手动抛出异常?

为了手动在代码块中抛出异常, 关键字。然后捕获此异常并在 catch 块中处理。

public void topMethod() {
    try {
        excMethod();
    } catch (ManualException e) {}
}

public void excMethod {
    String name = null;
    if (name == null) {
        throw (new ManualException("Exception thrown manually ");
        }
    }

84) 我希望我的类能够以这样的方式开发:没有其他类(甚至是派生类)可以创建它的对象。我该怎么做?

如果我们将一个类的构造函数声明为私有的,那么其他任何类都无法访问它,因此其他任何类都无法实例化它,并且其对象的形成也仅限于其自身。


85)对象如何存储 Java?

在 Java 中,每个对象在创建时都会从堆中获得一个内存空间。当某个对象被垃圾收集器销毁时,从堆中分配给它的空间将重新分配给堆,并可供任何新对象使用。


86) 如何找到堆上对象的实际大小?

在 java 中,没有办法找出堆上对象的确切大小。


87)下列哪个类将分配更多的内存?

A 类:三种方法,四个变量,没有对象

B 类:五种方法,三个变量,没有对象

在创建对象之前不会分配内存。由于这两个类都没有创建对象,因此堆上不会为任何类分配内存。


88) 如果程序中没有处理异常会发生什么?

如果程序中未使用 try catch 块处理异常,则程序将中止,并且在导致引发异常的语句之后不会执行任何语句。


89) 我在一个类中定义了多个构造函数。是否可以从另一个构造函数的主体中调用一个构造函数?

如果一个类有多个构造函数,那么可以使用以下命令从另一个构造函数的主体中调用一个构造函数 这().


90)匿名类是什么意思?

匿名类是使用 new 关键字在一行代码中定义的没有任何名称的类。

例如,在下面的代码中,我们用一行代码定义了一个匿名类:

public java.util.Enumeration testMethod()

{

    return new java.util.Enumeration()

    {

        @Override

        public boolean hasMoreElements()

        {

            // TODO Auto-generated method stub

            return false;

        }

        @Override

        public Object nextElement()

        {

            // TODO Auto-generated method stub

            return null;

        }

    }

91) 有没有办法在声明数组后增加其大小?

数组是静态的,一旦我们指定了它的大小,我们就不能改变它。如果我们想使用这样的集合,我们可能需要改变大小(项目数量),我们应该优先选择向量而不是数组。


92)如果一个应用程序中有多个类,那么在多个类中都有一个 main 方法可以吗?

如果 Java 应用程序中多个类中都有 main 方法,则不会引起任何问题,因为任何应用程序的入口点都是特定的类,并且代码将仅从该特定类的 main 方法开始。


93) 我想保存对象的数据以供日后使用。最好的方法是什么?

保存数据以供将来使用的最佳方式是使用序列化的概念。


94)什么是本地类 Java?

In Java,如果我们在特定块内定义一个新类,则它被称为本地类。这样的类具有本地作用域,并且在其定义的块之外不可用。


95) 字符串与字符串Buffer 两者都代表 String 对象。我们可以比较 String 和 StringBuffer in Java?

尽管 String 和 StringBuffer 都代表字符串对象,我们不能将它们相互比较,如果我们尝试比较它们,我们会收到错误。


96)哪个 API 由 Java 对对象集进行操作?

Java 提供了 Collection API,其中提供了许多可应用于一组对象的有用方法。Collection API 提供的一些重要类包括 ArrayList、HashMap、TreeSet 和 TreeMap。


97) 我们可以通过类型转换将任何其他类型转换为布尔类型吗?

不,我们既不能将任何其他原始类型转换为布尔数据类型,也不能将布尔数据类型转换为任何其他原始数据类型。


98) 重写方法时可以使用不同的返回类型吗?

方法重写的基本要求 Java 是被重写的方法应该具有相同的名称和参数。但方法可以被不同的返回类型重写,只要新的返回类型扩展了原始类型即可。

例如,方法返回引用类型。

Class B extends A {

    A method(int x) {

        //original method

    }

    B method(int x) {

        //overridden method

    }

}

99) 所有异常类的基类是什么?

In Java, Java.lang.Throwable 是所有异常类的超类,所有异常类都从这个基类派生而来。


100) 继承中构造函数的调用顺序是怎样的?

在继承的情况下,当创建派生类的新对象时,首先调用超类的构造函数,然后调用派生类的构造函数。

为你的求职面试做好准备! Java 教程 以便做好更好的准备。

这个详细 Java 模拟测试测验将帮助您消除疑虑 Java 面试问题,也将帮助您破解面试。

这些 Java 和 Java 8 个面试问题 也会对你的口试有帮助