equals、==

为什么重写 equals 后还要重写 hashcode?

  • equals 方法本身就是为了判断两个对象是否相等。两个对象如果相等那么就应该具有相同的hashCode,这也是 JDK 源码中 hashCode 的常规协定。因此重写 equals 时参与的字段例如根据两个对象的 id 是否相等来判断两个对象是否相等,那么 id 也必须参与 hashCode 的计算,例如将 hashCode 的返回值改为返回 id 的 hashCode。这样对象相等 == id 相等 == hashCode 相等

== 和 equals 比较的区别

  • == 在比较基本数据类型时对比的是栈中的值,在比较引用类型时比较堆中内存存放的对象的地址

  • 而 equals() 是 Object 提供的一个方法,只能比较引用类型。Object 中 equals() 方法默认采用 == 比较,但是 equals() 可以被重写来比较两个对象的值。(一般都会重写)

final 关键字的作用

  • 修饰变量则该变量不可被重新赋值,修饰方法则该方法不可被子类重写,修饰类则该类无法被继承。(匿名类中所有变量必须是 final)

介绍 Java 的集合类

  • 集合是一个容器,是一个载体,可以一次容纳多个对象。

  • 集合顶级接口有 Collection 和 Map,Collection 接口是最基本的集合接口,不提供直接实现,Collection 所代表的时一种规则,它所存储的元素都必须遵循一条或多条规则。Map 是由一系列键值对组成的集合,提供了 key 到 Value 的映射。

  • Collection 的直接接口包含 List、Set、Queue。

    List:列表,有序,元素可重复,实现类如下

    • ArrayList

    • LinkedList

    • Vector

    • Stack

    Set: 集合,元素不可重复,实现类如下

    • HashSet

    • LinkedHashSet

    • TreeSet

    • EnumSet

    Quene: 队列,有序,可重复,实现类如下

    • ArrayDeque

    • LinkedList

    • PriorityQueue

  • Map 的实现类有 HashMap、TreeMap、HashTable、Properties、EnumMap。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值