自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 2.7 不要使用finalize()

不使用的理由:1.不能确定finalize()什么时候被执行2.不能保证finalize()一定会被执行3.使用finalize()严重影响性能4.如果执行finalize()抛出异常,异常被忽略(不会有任何提示),此方法立刻终止执行,导致对象状态不一致 在以下情况可以谨慎使用:1.如InputStream,如果编程者忘记调用close(),可以在finalize()...

2013-07-31 16:13:49 109

原创 2.7 不要使用finalize()

2013-07-31 16:13:49 59

原创 2.6 移除过时的对象引用

如下代码(以下代码来自Effective Java一书):public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = n...

2013-07-31 15:51:03 103

原创 2.6 移除过时的对象引用

blic Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (size == 0) throw new EmptyStackException(); return elements[--

2013-07-31 15:51:03 54

原创 2.5 避免创建不必要的对象

1.避免使用new String("hello")创建不必要的字符串对象(在Java里,字符串实现为常量,以上方式将创建不必要的字符串对象)。以下测试: private String temp; @BeforeClass public void init(){ //初始化创建hello字符串对象,避免影响后面测试 this.temp="hello"; } ...

2013-07-31 14:44:51 93

原创 2.5 避免创建不必要的对象

mp; @BeforeClass public void init(){ //初始化创建hello字符串对象,避免影响后面测试 this.temp="hello"; } @Test public void testStringOne(){ for(int i=0;i<10000;i++){ String s="hello"; System.out.println(s); } }

2013-07-31 14:44:51 49

原创 2.4 禁止创建工具类实例

使用以下方式不仅可以禁止创建工具类的实例,还可以禁止继承工具类注:工具类指仅包含静态方法的类,如java.util.Collectionspublic class MyUtil { private MyUtil(){ throw new IllegalAccessError(); }} 使用final可禁止类被继承,使用abstract可禁止创建类的实例(仍可...

2013-07-31 13:42:13 142

原创 2.4 禁止创建工具类实例

te MyUtil(){ throw new IllegalAccessError(); }} 使用final可禁止类被继承,使用abstract可禁止创建类的实例(仍可创建匿名对象)。但是不能同时使用final、abstract声明类。

2013-07-31 13:42:13 60

原创 2.3 使用单例

以下单例模式利用JVM的类加载机制保证单例对象的线程安全和初始化(在第一次类被加载时,会初始化INSTANCE属性,进而创建单例对象)public class SingletonOne { //在类加载后立即初始化 public static final SingletonOne INSTANCE=new SingletonOne(); private SingletonO...

2013-07-31 11:41:36 49

原创 2.3 使用单例

etonOne { //在类加载后立即初始化 public static final SingletonOne INSTANCE=new SingletonOne(); private SingletonOne(){}} 为了符合一般约定,也可以提供getInstance()方法返回单例对象public class SingletonTwo { private static final SingletonTwo INSTANCE=new SingletonTwo();

2013-07-31 11:41:36 40

原创 2.2 使用builder替代多参数构造函数

如果构造函数参数超过4个,可以考虑使用builder创建对象。 如下,MultiConstructorShoe提供了多个构造函数,以避免使用包含最多参数的构造函数: package com.bingo.practice.effective.two.two;public class MultiConstructorShoe { //鞋的名称 private Str...

2013-07-30 15:29:43 186

原创 2.2 使用builder替代多参数构造函数

package com.bingo.practice.effective.two.two;public class MultiConstructorShoe { //鞋的名称 private String name; //鞋的大小 private int size; //鞋的颜色 private int color; //鞋的类型,如男鞋、女鞋,童鞋 private int sex; public MultiConstructorShoe(String n

2013-07-30 15:29:43 120

原创 2.1 使用静态工厂方法替代构造函数

使用静态工厂方法(static factory method)优点: 1.与构造函数相比,静态工厂方法具有更有意义的名称public Boolean(String string) {}//getBoolean()比new Boolean()名称上更有意义public static boolean getBoolean(String string) {} 2.静态...

2013-07-30 12:30:02 263

原创 2.1 使用静态工厂方法替代构造函数

olean()名称上更有意义public static boolean getBoolean(String string) {} 2.静态工厂方法可以返回一个已创建的对象,而构造函数每次都会创建一个新对象。利用此方式可实现flyweight设计模式。//每次调用返回的是已存在的对象 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 3.静

2013-07-30 12:30:02 73

原创 String, StringBuffer, StringBuilder的区别

先来看以下问题,以下代码创建了几个对象? String s1=new String("abc");  网上比较流行的说法是创建了两个对象:字符串对象abc和引用对象s1。这种说法十分模糊,什么是引用对象?s1究竟是引用还是对象? 正确的说法应该是s1是引用了一个字符串对象的变量,通过s1可以操作其所引用的字符串对象。因此从某种意义上,可以把s1直接视为对象(可以把s...

2013-07-29 15:45:27 67

原创 String, StringBuffer, StringBuilder的区别

2013-07-29 15:45:27 54

JavaSE8 API.chm

java8 API帮助文档 chm格式。根据官方文档制作

2015-08-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除