Effective Java
wyy6713
这个作者很懒,什么都没留下…
展开
-
基本类型优先于装箱基本类型
在基本类型和装箱基本类型中有3个主要区别: 1、基本类型只有值,装箱基本类型具有与它们的值不同的统一性; 2、基本类型只有功能完备的值,而每个装箱基本类型除了它对应基本类型的所有功能值外,还有个非功能值–null; 3、基本类型比装箱基本类型更节省时间和空间。看下面的一个小例子:public class Unbelievable { static Integer i; publ原创 2017-03-02 14:29:26 · 624 阅读 · 0 评论 -
当心字符串连接的性能
字符串连接操作符“+”是把多个字符串合并成为一个字符串,要想单独产生一行的输出,或者构造一个字符串来表示一个较小的、大小固定的对象,使用连接操作符是非常合适的,但是它不适合运用在大规模的场景中。为链接n个字符串而重复的使用字符串连接符,需要n的平方级的时间,主要是因为字符串不可变导致的不幸结果。看一个下面的例子: public static void main(String[] args)原创 2017-03-02 14:59:42 · 422 阅读 · 1 评论 -
用私有构造器或者枚举类型强化Singleton属性
在java1.5版本之前,实现Singleton有两种方法。这两种方法都要把构造器保持为私有的,并导出公有的静态成员,一遍允许客户端能够访问该类的唯一实例。在第一种方法中,公有静态成员是个final域:public class Elvis{ public static final Elvis INSTANCE = new Elvis(); private Elvis(){...}原创 2017-03-09 16:03:26 · 426 阅读 · 0 评论 -
executor和task优先于线程
在java1.5,java平台中增加了java.util.concurrent,它创建了一个在各方面都很好的队列,只需要一行这样的代码:ExecutorService service = Executors.newSingleThreadExecutor();下面是为执行提交一runnable的方法:service.execute(runnable);下面是如何优雅的终止:se原创 2017-02-27 11:05:32 · 672 阅读 · 0 评论 -
遇到多个构造器参数时要考虑用构建器
重叠构造器模式可行,但是当有许多参数的时候,客户端代码会很难编写 Builder模式: 不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器,得到一个builder对象。public class NutritionFacts { private final int servingSize; private final int servings; private f原创 2017-03-14 17:44:12 · 264 阅读 · 0 评论 -
避免创建不必要的对象
下面是一个比较微妙也比较常见的反面的例子,其中涉及可变的Date对象,他们的值一旦计算出来之后就不再变化。这个类建立了一个模型:其中有一个人,并有一个isBabyBoomer方法,用来检验这个人是否为一个BabyBoomer,换句话说,就是检验这个人是否出生于1946年至1964年之间。public class person { private final Date birthDate =原创 2017-03-14 20:28:59 · 190 阅读 · 0 评论