java面试

Java基本语法

equals 和 hashcode

为什么重写 equals 方法的时候要重写 hashCode 方法?

  • hashCode 和 equals 都继承自 object 类,hashCode 方法返回的哈希值可认为是对象的地址,equals 方法比较两个对象的地址是否相等
  • 重写 equals 方法一般是为了比较两个对象的值是否相等,比如成员变量是否对应相等
  • 规定,两个对象 equals 返回 true,则它们 hashCode 的值必须相等
  • 所以,两个地址不同的对象,重写 equals 方法的时候要重写 hashCode 方法时返回值相等

equals 和 == 的区别?

  • 不重写 equals,两者作用一样,比较地址是否相等
  • 基本数据类型没有 equals 方法,== 比较值是否相等
  • String 类型不是基本数据类型,重写了 equals 方法比较值是否相等

HashMap 的 put 和 get 实现原理?

int 和 Integer 的区别?

Integer 是 int 的包装类,int 是基本数据类型

Integer 是对象的引用,通过指针指向对象,int 直接存储数据值

Integer 默认值是 null,int 默认值是 0

面向对象 继承 接口

面向对象的优点

封装 继承 多态

封装:隐藏内部细节,对外提供接口。可以减少耦合,代码可复用,方便维护

继承:减少重复代码

多态:编译时多态:方法的重载;运行时多态:程序中定义的对象的引用所指向的具体类型在运行期间才确定(继承,重写,向上转型)

重载 与 重写 的区别?

重载:针对同一个类的同名方法,比如构造函数,参数的类型,个数,顺序至少有一个不同

重写:针对子类继承父类,重写的方法具体实现不同,参数和返回类型必须相同(或者父类返回类型的子类型)

接口 和 抽象类 的区别?

可以实现多个接口,只能继承一个抽象类

方法的实现 都可以不全部实现 接口可以通过 默认方法 定义方法的具体实现

抽象类的抽象方法必须实现,抽象方法是没有具体实现的


发布于2021-09-14 23:39:39