Effective java 读书笔记
来源:互联网 发布:雅马哈合成器 知乎 编辑:程序博客网 时间:2024/06/07 05:08
1.清除过期对象引用,防止内存泄漏
例子:
public Object pop() { if (size == 0) { throw new EmptyStackException(); } Object result = elements[--size]; elements[size] = null; return result; }一旦元素被释放,元素中包含的任何对象引用都要被清除。
常见内存泄漏:把引用放到缓存中,容易遗忘;监听器和回调,注册后没有取消。
2.equals和hashCode
hashCode返回一个数值型散列值,根据该值确定对象在散列表中存在的位置。所以相同的对象必须要有相同的hashCode。覆盖equals时,hashCode也需要覆盖。否则会出现这种情况。
class Dog { String name; public Dog(String name) { this.name = name; } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof Dog)){ return false; } return ((Dog) obj).name.equals(this.name); } } @Test public void test() { Map<Dog, Object> map = new HashMap<>(); map.put(new Dog("aa"), "aa"); System.out.println(map.get(new Dog("aa"))); //null }覆盖了equals方法,两个dog实例是相等的,但是它们的散列值不同,所以第一个put的dog对象被放到了一个散列桶中,而第二个get的dog对象是在另一个散列桶中获取,自然为null
阅读全文
0 0
- 《Effective Java》读书笔记之一
- 《Effective Java》读书笔记
- Effective Java读书笔记
- Effective Java 读书笔记
- 《Effective Java》读书笔记
- 《Effective Java》读书笔记之一
- Effective java 读书笔记
- 《Effective in java》 读书笔记
- Effective Java读书笔记
- Effective java 读书笔记
- Effective Java读书笔记
- Effective Java读书笔记一
- Effective Java读书笔记二
- Effective Java读书笔记三
- Effective Java读书笔记四
- Effective Java读书笔记五
- Effective Java读书笔记六
- Effective Java读书笔记七
- Unix信号详解(Signal的信号说明)
- Oracle跟MySQL的区别和联系
- SSM+Ehcache整合实例
- POI 附件在线预览
- tensorflow的基本运作
- Effective java 读书笔记
- C++编程思想之回调函数
- 汇哲科技-8月31日国盟CRISC每日一题
- 避免IE在ajax请求时,返回json出现下载
- oracle sql format
- Eclipse 默认设置的换行长度
- 第五十九篇:commons-collections使用介绍之Map
- Spring学习笔记(三十六):后台接口如何解析请求数据request
- Mybatis简介