21. 说一说hashCode()和equals()的关系(⭐⭐

如果只重写hashCode:可能当哈希冲突时,虽然两个对象相等,还是equals还是返回False,导致hashset具有两个相同对象。

如果只重写equals:可能两个对象相等,但是不会发生哈希冲突,导致hashset具有两个相同对象。

22. 为什么要重写hashCode和equals(⭐⭐

Object类提供的equals()方法默认是用==来进行比较的,也就是说只有两个对象是同一个对象时,才能返回相等的结果。

而实际的业务中,我们通常的需求是,**若两个不同的对象它们的内容是相同的,就认为它们相等。**所以应该重写equals方法。

同时,如果重写equals就一定要重写hashCode方法。如果不重写可能会出现两个对象相等,但是不会发生哈希冲突,导致hashset具有两个相同对象的情况。

23. ==和equals()有什么区别(⭐⭐⭐

24. String类有哪些方法?(

25. String可以被继承吗?(⭐⭐)-

String类由final修饰,所以不能被继承。

之所以要把String类设计为不可变类,主要是出于安全和性能的考虑,可归纳为如下4点。