![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Effective Java
翼海同行
ostocy-jshop作者现更名为jshoper
展开
-
Effective Java第一条:考虑用静态工厂方法替代构造器
以下代表书中的见解和我个人的摘录,如有问题请指出1, 在构建一个类的实例时,我们有2个方法,一个是提供构造器,而另一个就是提供静态工厂方法(static factory method)。2, 静态工厂方法与构造器不同的第一大优势在于,他们有名称。3, 静态工厂方法与构造器不同的第二大优势在于,不必在每次调用它们的时候都创建一个新的对象。静态工厂方法能够为重复的调用返回相同的对象,这...2009-07-28 14:36:00 · 76 阅读 · 0 评论 -
Effective Java第二条:遇到多个构造器参数时要考虑用构建器
1, 对于一个类具有很多可选参数时,我们考虑使用:a,重叠构造器(telescoping constructor),b,JavaBean模式。C,构建器即Builder模式2, 重叠构造器模式下,第一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个构造器有两个,以此类推。3, Javabean模式提供了set方法来设置值。但是其有可能出于不一致状态,所以我们必须保证其线程安全。...2009-07-28 15:46:00 · 68 阅读 · 0 评论 -
Effective java第三条:使用私有构造器或者枚举类型强化Singleton属性
第三条:使用私有构造器或者枚举类型强化Singleton属性1, Singleton指的是只能被实例化一次的类。2, 实现Singleton有3中方法,分别是:Apublic class Elvis{ public static final Elvis INSTANCE=new Elvis();private Elivs(){…}...2009-07-28 19:28:00 · 57 阅读 · 0 评论 -
Effective Java第四条:通过私有构造器强化不可实例化的能力
第四条:通过私有构造器强化不可实例化的能力1, 对于一个全是静态方法和静态域的类来说,这个类可以是一个工具类。那么工具类是不希望被实例化的,实例化对他么有任何意义。然后我们如果不提供构造器,jvm会自己提供,那还是会被实例化,那么我们只要在类中提供一个私有的构造器就可以了。2, 企图通过将类做成抽象类来强制该类不可被实例化,这个是行不通的。该类可以被子类实例化。3, 在提供私有构造...2009-07-29 23:16:00 · 63 阅读 · 0 评论 -
Effective Java第五条:避免创建不必要的对象
第五条:避免创建不必要的对象1, 有个一典型的例子String s=new String(“a”);这个语句每次都都创建一个新的string实例。但是这没有必要。你可以这么写。String s=”a”;这样就避免了创建一个新的string实例。2, 对于同时提供了静态工厂方法和构造器的不可变类,通常可以使用静态工厂方法而不是构造器,以避免创建不必要的对象。构造器在每次调用的...2009-07-29 23:17:00 · 64 阅读 · 0 评论 -
Effective Java第六条:消除过期的对象引用
第六条:消除过期的对象引用1, 如果一个栈先是增长,然后再收缩,那么在栈中弹出来的对象将不会被当做垃圾回收,即使使用栈的程序不再引用这些对象,它们也不会被回收,因为,在栈的内部保存了对象的过期引用(obsolete reference),过期引用指的就是永远不会再被解除的引用。2, 在stack中解决过期引用的方法就是在把对象推出栈的时候,设置栈为null。3, 自行管理内存的类都...2009-07-29 23:19:00 · 159 阅读 · 0 评论 -
Effective Java第七条:避免使用终结方法
第七条:避免使用终结方法 1, 终结方法(finalizer)会让程序不稳定,性能降低,出现可移植性的问题。2, Finalizer在c++中师析构器(destructors)的一部分,用作回收资源。在java中垃圾回收机制可以帮助完成。也可以通过try-finally在手动执行类似工作。3, 在JVM中终结方法是被延迟执行的,也就是说,线程优先级低于其他类型的线程,...2009-07-29 23:22:00 · 51 阅读 · 0 评论 -
回想起刚学编程时i++和++i的问题
int count=0;for(int i=0;i<10;i++){ count=count++}System.out.println("count="+count) 如上代码 count会是几呢?结果是0. 因为jvm对这段代码的处理步骤是这样的:1,jvm把count拷贝到临时变量区2,count加1,这时count是1了3,返回临时...原创 2012-03-30 19:11:04 · 63 阅读 · 0 评论