1. JDK 和 JRE 有什么区别?
jdk:开发工具包,jre:java运行环境
jdk包含了jre和java开发环境,如编译java源码的编译器javac,还包含了许多java程序调试和分析的工具。
如果需要运行java程序,安装jre就可以了。如果需要编写java程序,需要安装jdk。
2. == 和 equals 的区别是什么?
基础类型:==和equals都是比较值。
引用类型:==是比较引用是否相等。equals本质上也是比较引用是否相等,但是String、Integer等很多类重写了equals方法,把它变成了值的比较。
3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不对。两个对象equals()相等,则两个对象的 hashCode()必须相同,反之不一定。hashCode是通过算法实现的,表示逻辑地址而不是真实地址。
4. final 在 java 中有什么作用?
final修饰的类不能被继承也就是没有任何子类。
final修饰的方法不能被重写。同时abstract和final关键字不能同时使用,互相矛盾。
final修饰的成员变量不可变,必须手动赋值不会给默认值。手动赋值分为直接复制和构造方法赋值,构造方法必须带final修饰的成员变量。
final修饰的局部变量,如果是基本类型,只能赋值一次不能再更改;如果是引用类型,只能指向一个对象地址不能再更改。但是不影响对象内部的值改变。