每天5道Java面试题(第二天)

2023-11-05 08:42:28 浏览数 (1)

1. JDK 和 JRE 有什么区别?

JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。

JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。

具体来说JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。

2. 为什么java中没有全局变量?

java中是没有真正的全局变量的,因为一个java程序其实就是由多个类方法堆积起来的,而每个类、方法中的变量实际上都是属于它 自己的“全局变量”,相对于其他类、方法来说这些变量就成了局部变量。

3. == 和 equals 的区别是什么?

== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用地址;

equals 默认情况下是引用地址比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较。

4. 重写(overwrite) 和 重载(overload)的区别?

重载:

发生在同一个类中

相同的方法名

参数列表不同

不看返回值,如果出现了只有返回值不同的“重载”,是错的。

重写:

发生在子类与父类中

相同的方法名

相同的参数列表

返回值相同 或者 子类方法的返回值是父类方法返回值类型的子类

访问修饰符相同 或者 子类方法的修饰符范围 大于 父类

抛出的异常相同 或者 子类方法抛出的异常 小于父类

5. 两个对象的hashCode() 相同,则equals()也一定为true,对吗?

不对,两个对象的hashCode()相同,equals()不一定 true。

String“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

0 人点赞