随笔分类 -  Effective Java读书笔记

摘要:Clone提供一种语言之外的机制:无需调用构造器就可以创建对象。 它的通用约定非常弱: 创建和返回该对象的一个拷贝。这个拷贝的精确含义取决于该对象的类。一般含义是,对于任何对象x,表达式x.clone() != x 将会是true,并且,表达式x.clone().getClass() == x.ge 阅读全文
posted @ 2016-07-07 15:39 没有梦想的小灰灰 阅读(299) 评论(0) 推荐(0)
摘要:java.lang.Object的toString方法的实现: 这通常不是用户期望看到的,它包含类名称,一个“@”符号,以及散列码的无符号十六进制表示法。 toString通用约定指出,被返回的字符串应该是一个“简洁的,但信息丰富,并且易于阅读的表达形式”,进一步的约定指出,建议所有的子类都覆盖这个 阅读全文
posted @ 2016-07-06 10:29 没有梦想的小灰灰 阅读(437) 评论(0) 推荐(0)
摘要:在每个覆盖equals方法的类中,也必须覆盖hashCode方法。否则,会违反Object.hashCode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常工作,包括HashMap,HashSet,Hashtbale。 hashCode约定内容: 1.只要对象equals方法的比较操作所用 阅读全文
posted @ 2016-07-06 09:15 没有梦想的小灰灰 阅读(250) 评论(0) 推荐(0)
摘要:如果不需要覆盖equals方法,那么就无需担心覆盖equals方法导致的错误。 什么时候不需要覆盖equals方法? 1.类的每个实例本质上是唯一的。 例如对于Thread,Object提供的equals实现正好符合。 2.不关心类是否提供了“逻辑相等”的测试功能。 例如Random类提供产生随机数 阅读全文
posted @ 2016-07-05 16:17 没有梦想的小灰灰 阅读(179) 评论(0) 推荐(0)
摘要:终结方法(finalize)通常是不可预测的,它不是C++中析构器(destructors)的对应物,Java中一旦对象变的不可达,垃圾回收器会自动回收与该对象相关的存储空间,不需要程序员做专门的工作。C++析构器也可以用来回收其他非内存资源,在Java中,通常用try-finally来完成。 终结 阅读全文
posted @ 2016-06-25 11:27 没有梦想的小灰灰 阅读(316) 评论(0) 推荐(0)
摘要:Java的垃圾回收机制并不代表我们不需要考虑内存管理的问题。 考虑: 这是自己编写的一个栈。 这段程序没有任何明显的错误,但这个程序中隐藏着一个问题,内存泄漏。 如果一个栈先是增长,然后收缩,那么从栈中弹出来的对象不会被当作垃圾回收,这是因为栈内部仍然维护着这些过期对象的引用,所谓过期引用是指ele 阅读全文
posted @ 2016-06-24 20:29 没有梦想的小灰灰 阅读(1012) 评论(0) 推荐(0)
摘要:一般来说,在能重用对象的时候就重用对象而不是创建一个相同功能的新对象。如果对象是不可变的,它始终能被重用。 考虑String s = new String("stringette"); 每次被执行的时候都创建一个新的String实例,但这些创建对象的动作是不必要的,如果这个语句被频繁调用,那么多产生 阅读全文
posted @ 2016-06-23 13:19 没有梦想的小灰灰 阅读(192) 评论(0) 推荐(0)
摘要:当需要编写只包含静态方法和静态域的类时,像是java.lang.Math,java.util.Arrays,把基本类型的值或者数组类型上的相关方法组织起来,或者像java.util.Collections,把实现特定接口的对象上的静态方法组织起来。 这样的工具类不希望被实例化,实例对它没有意义。 企 阅读全文
posted @ 2016-06-22 23:59 没有梦想的小灰灰 阅读(176) 评论(0) 推荐(0)
摘要:Singleton是指仅仅被实例化一次的类。通过被用来代表那些本质上唯一的系统组件,比如窗口管理器或者文件系统。 在http://www.cnblogs.com/13jhzeng/p/5256424.html中,提到了不同情境下Singleton多种实现方法。 使用单例类的方法来实现的Singlet 阅读全文
posted @ 2016-06-22 09:37 没有梦想的小灰灰 阅读(167) 评论(0) 推荐(0)
摘要:静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。 假如一份营养成分的标签,有两个域是必须的,四个域是可选的。 1.重叠构造器模式 提供一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个构造器有两个可选参数,依次类推,直到最后一个构造器包含所有的可选参数。 缺点:谁作 阅读全文
posted @ 2016-06-21 11:08 没有梦想的小灰灰 阅读(261) 评论(0) 推荐(0)
摘要:为了获得一个类的实例,有两种办法1.类提供一个公有的构造器 2.类提供一个公有的静态工厂方法。 静态工厂方法的优势: 1.有名称。 慎重地选择方法名称能突出多个构造器的区别,例如使用BigInteger(int, int, Random)构造器,返回的BigInteger可能为素数,如果用 BigI 阅读全文
posted @ 2016-06-20 23:22 没有梦想的小灰灰 阅读(221) 评论(0) 推荐(0)