Java经典面试题(一)
1.在 Java 中类的定义在 Java 中,类是用于创建对象和定义数据类型的模板。 它充当面向 Java 语言的系统的构建块。
2.静态加载和动态加载有什么区别?静态类加载涉及使用新关键字来创建对象和实例,而动态加载是在编译时不知道类的名称的场景执行的。
3. 什么是多线程多线程是一种编程概念,用于在单个程序中以并发方式运行多个任务。
4. 何时以及是谁开发的 Java ?Java 由 James Gosling 于 1995 年在 Sun Microsystem 中开发。
5. JDK,JRE 和JVM 分别代表什么?
- JVM 代表 Java 虚拟机
- JRE 代表 Java Runtime Environment
- JDK 代表 Java Development Kit
6. Java 中使用指针吗?不,Java不使用指针。 它具有严格的安全性。 而不是指针,Java中使用引用,因为与指针相比,它们更安全,更安全。
7.如何使用Java连接数据库?使用Java连接数据库的步骤如下:
- 注册驱动程序类
- 创建连接
- 创建声明
- 执行查询
- 关闭连接
8. JVM和JRE的功能是什么?JVM 为要执行的 Java 字节代码提供运行时环境。 JRE 包括 JVM 在运行时期间所需的文件集。
9.重载和覆盖(重写)有什么区别?当有两个名称相同但属性不同的方法时,它会重载。 当有两个具有相同名称和属性的方法时,会发生覆盖,一个在子类中,另一个在父类中。 查看此帖子以获得更深入的分析。
10.哈希基于集合的负载因子的默认大小是多少?默认大小为0.75,默认容量计算如下: 初始容量*负载因子
11.什么是包?包是相关类和接口的集合。
12.所有异常类的基类是什么?Java.lang.Throwable 是所有异常类的超类,所有异常类都是从这个基类派生的。
13. equals()和= =之间有什么区别?equals()方法用于检查业务逻辑定义的两个对象的相等性。 == 或等于运算符用于比较基元和对象。
14.说两个内部类和子类之间的差异Inner类在同一个文件中,子类可以在另一个文件中。 考虑到这一点,虽然子类具有其父类的方法,但内部类获取他们想要的方法。
15.如何用Java定义析构函数?由于Java有自己的垃圾收集,因此不需要定义析构函数。 垃圾收集机制自动执行对象的回收。
16. JSON定义JSON是JavaScript Object Notation的首字母缩写。 它使用JavaScript语法,格式仅为文本。
17.列举Java最重要的特性Java是一种独立于平台的语言。
18.什么是匿名类?使用new关键字在单行代码中没有名称定义的类称为匿名类。
19.什么是JVM?JVM是Java虚拟机,它是已编译的Java类文件的运行时环境。
20.死去的线程可以重新开启吗?不,处于死状态的线程无法再次启动。
21. 数组是原始数据类型吗?不,在Java中,数组是对象。
22.什么是Java中的构造函数?在Java中,构造函数是用于初始化对象的代码块。
23.有哪些类型的构造器?有两种类型的构造函数: 1.默认构造函数: 没有参数的构造函数称为默认构造函数。 如果我们没有在类中定义构造函数,编译器会为该类创建一个默认构造函数(没有参数),如下所示:
1 // no-argument constructor 2 importjava.io.*; 3 class Sprint{ 4 intnum; 5 String name; 6 // this would be invoked while object 7 // of that class created. 8 Sprint(){ 9 System.out.println("Constructor called"); 10 } 11 } 12 class Z{ 13 public static void main (String[] args){ 14 // this would invoke default constructor. 15 Sprint zeal1 = new Sprint(); 16 // Default constructor provides the default 17 // values to the object like 0, null 18 System.out.println(zeal1.name); 19 System.out.println(zeal1.num); 20 } 21 }
参数化构造函数 参数化构造函数具有已知参数的构造函数是参数化构造函数。 如果我们想用自己的值初始化类的字段,那么使用*参数构造函数。
1 // Java Program to illustrate calling of 2 // parameterized constructor. 3 import java.io.*;
4 5 class Sprint{
6 7 // data members of the class. 8 String name; 9 int id; 10 // contructor would initialized data members 11 // with the values of passed arguments while 12 // object of that class created. 13 Sprint(String name, int id){ 15 this.name = name; 16 this.id = id; 17 } 18 } 19 class Z{
20 21 public static void main (String[] args){ 22 23 // this would invoke parameterized constructor. 24 Sprint zeal1 = new Sprint("adam", 1); 25 System.out.println("Sprint Name :"+ zeal1.name +" and Sprint Id :" + zeal1.id); 26 } 27 }
24.解释Java中的垃圾收器。在Java中,当不再使用或引用对象时,将调用垃圾收集并自动销毁对象。
25.堆栈和队列之间有什么区别?堆栈和队列之间的区别在于堆栈基于后进先出(LIFO)原则,而队列基于FIFO(先进先出)原则。