极客时间第9天

今天学习了java业务开发常见错误100例的判等问题

  1. 首先是基本数据类型只能用==,包装类型建议用equals,对于String类型,显式的赋值会相等,但是new String用==就是false.
    对于Integer,目前[-128,127]是缓存对象,Integer i = 1,实际上是调用了Integer.valueOf(),如果是new Integer()就不是一样的值

  2. ,默认的equals是判断引用是否相等,手动重写equals方法需要注意的事情:

    1. 如果这个对象引用相等,直接返回true
    2. 如果这个对象是空,直接返回false
    3. 如果这个对象的类型不一致,返回false
    4. 判断这个对象的属性规则是否一致
  3. 如果重写了equals,应当也要重写hashCode.因为map集合里面使用的hashCode方法,每个对象都有唯一的hashCode,要与equals逻辑保持一致.

  4. 如果重写了equals方法,最好也重写下compareTo方法与equals保持一致.

    1. Collection.searchBinary()就调用了compareTo方法
  5. loombook里面@Data已经帮你实现了equals方法,如果不需要某些字段参与比较可以在字段上面加入@EqualsAndHashCode.Exclud的注解进行排除

  6. 使用阿里巴巴的规约IDEA插件,可以提示你可能出错的代码

你可能感兴趣的:(极客时间第9天)