java 2019面试题总结
题目来自:https://blog.youkuaiyun.com/sufu1065/article/details/88051083
JDK和JRE的区别?
jdk是java开发工具,其中包括jre和其他工具,其中还有编译java源码的javac,jre是java的运行环境,
== 和 equals 的区别?
== 是比较内存地址,equals是比较内容,Object中equals还是使用 ==比较,如果想要使用对象的内容比较,要重写equals方法
两个对象的hashCode()相同,则equals一定相同吗?
不一定,hashCode是为了更快速的比较对象是否相同,Set中要求不能添加相同的元素,如果都使用比较,当元素多时要比较的次数就非常多了,效率非常低,使用hashCode()计算出该元素存放的位置,再使用equals比较,当两者都相同时才说明对象是相同的
final 在 java 中有什么作用?
final修饰的类不可被继承,final修饰的方法不可以被重写,final修饰的变量不可被修改,
final修饰的变量是引用不可以被改变,但是对象中的值可以改变
final修饰的成员变量,必须在对象被创建之前赋值,否则编译失败
final成员变量的赋值,1:使用构造赋值,2:定义时直接赋值