Java面试题
Java 基础
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.==和equals的区别是什么
(==)对于基本类型是引用类型 == 的作用是效果不同的
基本类型:比较值
引用类型:比较引用
(equals)对于基本类型是引用类型 == 的作用是效果不同的
equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较
(== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。)
3.两个数的hashcode相同,那么值一定相同?
不一定,两个对象的 hashCode() 相同,equals() 不一定 true
知识衍生:
(hashcode为什么会相同,因为hash表结合了直接寻址和链式寻址两种方式,
1.直接寻址可以理解为根据hashcode的值为索引进行寻找
hashcode返回的是int类型,所以存储的索引的数量是有限的2^32个
因此不可避免的在存储对象时,对不同的对象可能计算出相同的hashcode值
2.链式寻址是指当我们要存储两个具有相同hashcode的对象时,采用链式结构将它们连接起来)